示例#1
0
    def test_load_data(self):
        """
        """
        th = TestHelper()
        p1 = th.add_prefix('192.168.0.0/16', 'reservation', 'test')
        p2 = th.add_prefix('192.168.0.0/20', 'reservation', 'test')
        p3 = th.add_prefix('192.168.0.0/24', 'reservation', 'test')
        p4 = th.add_prefix('192.168.1.0/24', 'reservation', 'test')
        p5 = th.add_prefix('192.168.2.0/24', 'reservation', 'test')
        p6 = th.add_prefix('192.168.32.0/20', 'reservation', 'test')
        p7 = th.add_prefix('192.168.32.0/24', 'reservation', 'test')

        ps1 = th.add_prefix('2001:db8:1::/48', 'reservation', 'test')
        ps2 = th.add_prefix('2001:db8:1::/64', 'reservation', 'test')
        ps3 = th.add_prefix('2001:db8:2::/48', 'reservation', 'test')

        pool1 = Pool()
        pool1.name = 'upgrade-test'
        pool1.save()
        p2.pool = pool1
        p2.save()
        ps1.pool = pool1
        ps1.save()

        pool2 = Pool()
        pool2.name = 'upgrade-test2'
        pool2.save()

        vrf1 = VRF()
        vrf1.name = 'foo'
        vrf1.rt = '123:123'
        vrf1.save()
示例#2
0
 def test_add_pool(self):
     """ We should NOT be able to execute add_pool as read-only user
     """
     p = Pool()
     p.name = 'test'
     with self.assertRaises(NipapAuthorizationError):
         p.save()
示例#3
0
    def test_load_data(self):
        """
        """
        th = TestHelper()
        p1 = th.add_prefix('192.168.0.0/16', 'reservation', 'test')
        p2 = th.add_prefix('192.168.0.0/20', 'reservation', 'test')
        p3 = th.add_prefix('192.168.0.0/24', 'reservation', 'test')
        p4 = th.add_prefix('192.168.1.0/24', 'reservation', 'test')
        p5 = th.add_prefix('192.168.2.0/24', 'reservation', 'test')
        p6 = th.add_prefix('192.168.32.0/20', 'reservation', 'test')
        p7 = th.add_prefix('192.168.32.0/24', 'reservation', 'test')
        p8 = th.add_prefix('192.168.32.1/32', 'reservation', 'test')

        ps1 = th.add_prefix('2001:db8:1::/48', 'reservation', 'test')
        ps2 = th.add_prefix('2001:db8:1::/64', 'reservation', 'test')
        ps3 = th.add_prefix('2001:db8:2::/48', 'reservation', 'test')

        pool1 = Pool()
        pool1.name = 'upgrade-test'
        pool1.ipv4_default_prefix_length = 31
        pool1.ipv6_default_prefix_length = 112
        pool1.save()
        p2.pool = pool1
        p2.save()
        ps1.pool = pool1
        ps1.save()

        pool2 = Pool()
        pool2.name = 'upgrade-test2'
        pool2.save()

        vrf1 = VRF()
        vrf1.name = 'foo'
        vrf1.rt = '123:123'
        vrf1.save()
示例#4
0
 def test_edit_pool(self):
     """ We should NOT be able to execute edit_pool as read-only user
     """
     p = Pool()
     p.id = 123
     with self.assertRaises(NipapAuthorizationError):
         p.save()
示例#5
0
文件: xhr.py 项目: fredsod/NIPAP
    def add_pool(self):
        """ Add a pool.
        """

        # extract attributes
        p = Pool()
        if 'name' in request.json:
            p.name = validate_string(request.json, 'name')
        if 'description' in request.json:
            p.description = validate_string(request.json, 'description')
        if 'default_type' in request.json:
            p.default_type = validate_string(request.json, 'default_type')
        # TODO: handle integers
        if 'ipv4_default_prefix_length' in request.json:
            p.ipv4_default_prefix_length = request.json['ipv4_default_prefix_length']
        if 'ipv6_default_prefix_length' in request.json:
            p.ipv6_default_prefix_length = request.json['ipv6_default_prefix_length']
        if 'tags' in request.json:
            p.tags = request.json['tags']
        if 'avps' in request.json:
            p.avps = request.json['avps']

        try:
           p.save()
        except NipapError, e:
            return json.dumps({'error': 1, 'message': e.args, 'type': type(e).__name__})
示例#6
0
 def test_remove_pool(self):
     """ We should NOT be able to execute remove_pool as read-only user
     """
     p = Pool()
     p.id = 0
     with self.assertRaises(NipapAuthorizationError):
         p.remove()
示例#7
0
文件: pool.py 项目: tobbakko/NIPAP
    def add(self):
        """ Add a pool.
        """

        if 'schema' not in request.params:
            redirect(url(controller = 'schema', action = 'list'))
        c.schema = Schema.get(int(request.params['schema']))

        # Adding to NIPAP
        if request.method == 'POST':
            p = Pool()
            p.schema = c.schema
            p.name = request.params.get('name')
            p.description = request.params.get('description')
            p.default_type = request.params.get('default_type')

            if request.params['ipv4_default_prefix_length'].strip() != '':
                p.ipv4_default_prefix_length = request.params['ipv4_default_prefix_length']

            if request.params['ipv6_default_prefix_length'].strip() != '':
                p.ipv6_default_prefix_length = request.params['ipv6_default_prefix_length']

            p.save()
            redirect(url(controller = 'pool', action = 'list', schema = c.schema.id))

        return render("/pool_add.html")
示例#8
0
    def add_pool(self):
        """ Add a pool.
        """

        # extract attributes
        p = Pool()
        p.name = request.params.get('name')
        p.description = request.params.get('description')
        p.default_type = request.params.get('default_type')
        if 'ipv4_default_prefix_length' in request.params:
            if request.params['ipv4_default_prefix_length'].strip() != '':
                p.ipv4_default_prefix_length = request.params[
                    'ipv4_default_prefix_length']
        if 'ipv6_default_prefix_length' in request.params:
            if request.params['ipv6_default_prefix_length'].strip() != '':
                p.ipv6_default_prefix_length = request.params[
                    'ipv6_default_prefix_length']

        try:
            p.save()
        except NipapError, e:
            return json.dumps({
                'error': 1,
                'message': e.args,
                'type': type(e).__name__
            })
示例#9
0
文件: nipaptest.py 项目: Cougar/NIPAP
    def test_stats3(self):
        """ Check total stats are correct when adding and removing child prefixes from pool
        """
        th = TestHelper()

        # add a pool
        pool1 = th.add_pool('test', 'assignment', 31, 112)

        # add some members to the pool
        p1 = th.add_prefix('1.0.0.0/24', 'reservation', 'test', pool_id=pool1.id)
        p2 = th.add_prefix('2001:db8::/48', 'reservation', 'test', pool_id=pool1.id)

        # add child from pool
        pc1 = th.add_prefix_from_pool(pool1, 4, 'foo')
        pc2 = th.add_prefix_from_pool(pool1, 6, 'foo')

        # check stats for pool1
        res = Pool.list({ 'id': pool1.id })
        # ipv4
        self.assertEqual(1, res[0].member_prefixes_v4)
        self.assertEqual(1, res[0].used_prefixes_v4)
        self.assertEqual(256, res[0].total_addresses_v4)
        self.assertEqual(2, res[0].used_addresses_v4)
        self.assertEqual(254, res[0].free_addresses_v4)
        # ipv6
        self.assertEqual(1, res[0].member_prefixes_v6)
        self.assertEqual(1, res[0].used_prefixes_v6)
        self.assertEqual(1208925819614629174706176, res[0].total_addresses_v6)
        self.assertEqual(65536, res[0].used_addresses_v6)
        self.assertEqual(1208925819614629174640640, res[0].free_addresses_v6)

        # remove child prefixes
        pc1.remove()
        pc2.remove()

        # check stats for pool1
        res = Pool.list({ 'id': pool1.id })
        # ipv4
        self.assertEqual(1, res[0].member_prefixes_v4)
        self.assertEqual(0, res[0].used_prefixes_v4)
        self.assertEqual(256, res[0].total_addresses_v4)
        self.assertEqual(0, res[0].used_addresses_v4)
        self.assertEqual(256, res[0].free_addresses_v4)
        # ipv6
        self.assertEqual(1, res[0].member_prefixes_v6)
        self.assertEqual(0, res[0].used_prefixes_v6)
        self.assertEqual(1208925819614629174706176, res[0].total_addresses_v6)
        self.assertEqual(0, res[0].used_addresses_v6)
        self.assertEqual(1208925819614629174706176, res[0].free_addresses_v6)
示例#10
0
文件: xhr.py 项目: tobbakko/NIPAP
    def smart_search_pool(self):
        """ Perform a smart pool search.

            The "smart" search function tries extract a query from
            a text string. This query is then passed to the search_pool
            function, which performs the search.
        """

        search_options = {}

        if 'query_id' in request.params:
            search_options['query_id'] = request.params['query_id']

        if 'max_result' in request.params:
            search_options['max_result'] = request.params['max_result']
        if 'offset' in request.params:
            search_options['offset'] = request.params['offset']

        log.debug("params: %s" % str(request.params))

        log.debug("Smart search query: schema=%d q=%s search_options=%s" %
            (int(request.params['schema']),
            request.params['query_string'],
            str(search_options)
        ))

        try:
            schema = Schema.get(int(request.params['schema']))
            result = Pool.smart_search(schema,
                request.params['query_string'],
                search_options
                )
        except NipapError, e:
            return json.dumps({'error': 1, 'message': e.args, 'type': type(e).__name__})
示例#11
0
def modify_pool(arg, opts):
    """ Modify a pool with the options set in opts
    """

    s = get_schema()
    res = Pool.list(s, { 'name': arg })
    if len(res) < 1:
        print >> sys.stderr, "No pool with name %s found." % arg
        sys.exit(1)

    p = res[0]

    if 'name' in opts:
        p.name = opts['name']
    if 'description' in opts:
        p.description = opts['description']
    if 'default-type' in opts:
        p.default_type = opts['default-type']
    if 'ipv4_default_prefix_length' in opts:
        p.ipv4_default_prefix_length = opts['ipv4_default_prefix_length']
    if 'ipv6_default_prefix_length' in opts:
        p.ipv6_default_prefix_length = opts['ipv6_default_prefix_length']

    p.save()

    print "Pool %s saved." % p.name
示例#12
0
文件: pool.py 项目: hetznerZA/NIPAP
    def list(self):
        """ Displays a list of pools.
        """

        c.pools = Pool.list()

        return render('/pool_list.html')
示例#13
0
def list_pool(arg, opts):
    """ List pools matching a search criteria
    """

    s = get_schema()

    query = _expand_list_query(opts)
    res = Pool.search(s, query)
    if len(res['result']) > 0:
        print "%-19s %-39s %-14s %-8s" % (
            "Name", "Description", "Default type", "4 / 6"
        )
        print "-----------------------------------------------------------------------------------"
    else:
        print "No matching pools found"

    for p in res['result']:
        if len(p.description) > 38:
            desc = p.description[0:34] + "..."
        else:
            desc = p.description
        print "%-19s %-39s %-14s %-2s / %-3s" % (
            p.name, desc, p.default_type,
            str(p.ipv4_default_prefix_length),
            str(p.ipv6_default_prefix_length)
        )
示例#14
0
文件: xhr.py 项目: AlfredArouna/NIPAP
    def edit_pool(self, id):
        """ Edit a pool.
        """

        # extract attributes
        p = Pool.get(int(id))
        if 'name' in request.params:
            p.name = request.params.get('name')
        if 'description' in request.params:
            p.description = request.params.get('description')
        if 'default_type' in request.params:
            p.default_type = request.params.get('default_type')
        if 'ipv4_default_prefix_length' in request.params:
            if request.params['ipv4_default_prefix_length'].strip() != '':
                p.ipv4_default_prefix_length = request.params['ipv4_default_prefix_length']
            else:
                p.ipv4_default_prefix_length = None
        if 'ipv6_default_prefix_length' in request.params:
            if request.params['ipv6_default_prefix_length'].strip() != '':
                p.ipv6_default_prefix_length = request.params['ipv6_default_prefix_length']
            else:
                p.ipv6_default_prefix_length = None
        if 'tags' in request.params:
            p.tags = json.loads(request.params['tags'])
        if 'avps' in request.params:
            p.avps = json.loads(request.params['avps'])

        try:
           p.save()
        except NipapError, e:
            return json.dumps({'error': 1, 'message': e.args, 'type': type(e).__name__})
示例#15
0
    def smart_search_pool(self):
        """ Perform a smart pool search.

            The "smart" search function tries extract a query from
            a text string. This query is then passed to the search_pool
            function, which performs the search.
        """

        search_options = {}

        if 'query_id' in request.params:
            search_options['query_id'] = request.params['query_id']

        if 'max_result' in request.params:
            search_options['max_result'] = request.params['max_result']
        if 'offset' in request.params:
            search_options['offset'] = request.params['offset']

        try:
            result = Pool.smart_search(request.params['query_string'],
                                       search_options)
        except NipapError, e:
            return json.dumps({
                'error': 1,
                'message': e.args,
                'type': type(e).__name__
            })
示例#16
0
文件: xhr.py 项目: fredsod/NIPAP
    def smart_search_pool(self):
        """ Perform a smart pool search.

            The "smart" search function tries extract a query from
            a text string. This query is then passed to the search_pool
            function, which performs the search.
        """

        search_options = {}

        if 'query_id' in request.json:
            search_options['query_id'] = request.json['query_id']

        if 'max_result' in request.json:
            search_options['max_result'] = request.json['max_result']
        if 'offset' in request.json:
            search_options['offset'] = request.json['offset']

        try:
            result = Pool.smart_search(request.json['query_string'],
                search_options
                )
            # Remove error key in result from backend as it interferes with the
            # error handling of the web interface.
            # TODO: Reevaluate how to deal with different types of errors; soft
            # errors like query string parser errors and hard errors like lost
            # database.
            del result['error']
        except NipapError, e:
            return json.dumps({'error': 1, 'message': e.args, 'type': type(e).__name__})
示例#17
0
    def edit(self, id):
        """ Edit a pool.
        """

        c.pool = Pool.get(int(id))
        c.prefix_list = Prefix.list({'pool_id': c.pool.id})
        c.prefix = ''

        # save changes to NIPAP
        if request.method == 'POST':
            c.pool.name = request.params['name']
            c.pool.description = request.params['description']
            c.pool.default_type = request.params['default_type']
            if request.params['ipv4_default_prefix_length'].strip() == '':
                c.pool.ipv4_default_prefix_length = None
            else:
                c.pool.ipv4_default_prefix_length = request.params[
                    'ipv4_default_prefix_length']
            if request.params['ipv6_default_prefix_length'].strip() == '':
                c.pool.ipv6_default_prefix_length = None
            else:
                c.pool.ipv6_default_prefix_length = request.params[
                    'ipv6_default_prefix_length']
            c.pool.save()
            redirect(url(controller='pool', action='list'))

        c.search_opt_parent = 'all'
        c.search_opt_child = 'none'

        return render("/pool_edit.html")
示例#18
0
    def edit(self, id):
        """ Edit a pool.
        """

        c.pool = Pool.get(int(id))
        c.prefix_list = Prefix.list({ 'pool_id': c.pool.id })
        c.prefix = ''

        # save changes to NIPAP
        if request.method == 'POST':
            c.pool.name = request.params['name']
            c.pool.description = request.params['description']
            c.pool.default_type = request.params['default_type']
            if request.params['ipv4_default_prefix_length'].strip() == '':
                c.pool.ipv4_default_prefix_length = None
            else:
                c.pool.ipv4_default_prefix_length = request.params['ipv4_default_prefix_length']
            if request.params['ipv6_default_prefix_length'].strip() == '':
                c.pool.ipv6_default_prefix_length = None
            else:
                c.pool.ipv6_default_prefix_length = request.params['ipv6_default_prefix_length']
            c.pool.save()
            redirect(url(controller = 'pool', action = 'list'))

        c.search_opt_parent = 'all'
        c.search_opt_child = 'none'

        return render("/pool_edit.html")
示例#19
0
    def edit_pool(self, id):
        """ Edit a pool.
        """

        # extract attributes
        p = Pool.get(int(id))
        if 'name' in request.json:
            p.name = validate_string(request.json, 'name')
        if 'description' in request.json:
            p.description = validate_string(request.json, 'description')
        if 'default_type' in request.json:
            p.default_type = validate_string(request.json, 'default_type')
        # TODO: handle integers
        if 'ipv4_default_prefix_length' in request.json:
            p.ipv4_default_prefix_length = request.json[
                'ipv4_default_prefix_length']
        if 'ipv6_default_prefix_length' in request.json:
            p.ipv6_default_prefix_length = request.json[
                'ipv6_default_prefix_length']
        if 'tags' in request.json:
            p.tags = request.json['tags']
        if 'avps' in request.json:
            p.avps = request.json['avps']

        try:
            p.save()
        except NipapError, e:
            return json.dumps({
                'error': 1,
                'message': e.args,
                'type': type(e).__name__
            })
示例#20
0
    def remove(self, id):
        """ Remove pool.
        """

        p = Pool.get(int(id))
        p.remove()
        redirect(url(controller = 'pool', action = 'list'))
示例#21
0
    def smart_search_pool(self):
        """ Perform a smart pool search.

            The "smart" search function tries extract a query from
            a text string. This query is then passed to the search_pool
            function, which performs the search.
        """

        search_options = {}

        if 'query_id' in request.json:
            search_options['query_id'] = request.json['query_id']

        if 'max_result' in request.json:
            search_options['max_result'] = request.json['max_result']
        if 'offset' in request.json:
            search_options['offset'] = request.json['offset']

        try:
            result = Pool.smart_search(request.json['query_string'],
                                       search_options)
            # Remove error key in result from backend as it interferes with the
            # error handling of the web interface.
            # TODO: Reevaluate how to deal with different types of errors; soft
            # errors like query string parser errors and hard errors like lost
            # database.
            del result['error']
        except NipapError, e:
            return json.dumps({
                'error': 1,
                'message': e.args,
                'type': type(e).__name__
            })
示例#22
0
文件: nipaptest.py 项目: Cougar/NIPAP
    def test_stats2(self):
        """ Check total stats are correct when updating member prefix
        """
        th = TestHelper()

        # add a pool
        pool1 = th.add_pool('test', 'assignment', 31, 112)

        # add some members to the pool
        p1 = th.add_prefix('1.0.0.0/24', 'reservation', 'test', pool_id=pool1.id)
        p2 = th.add_prefix('2001:db8::/48', 'reservation', 'test', pool_id=pool1.id)

        p1.prefix = '1.0.0.0/25'
        p1.save()
        p2.prefix = '2001:db8::/64'
        p2.save()

        # check stats for pool1
        res = Pool.list({ 'id': pool1.id })
        # ipv4
        self.assertEqual(1, res[0].member_prefixes_v4)
        self.assertEqual(0, res[0].used_prefixes_v4)
        self.assertEqual(128, res[0].total_addresses_v4)
        self.assertEqual(0, res[0].used_addresses_v4)
        self.assertEqual(128, res[0].free_addresses_v4)
        # ipv6
        self.assertEqual(1, res[0].member_prefixes_v6)
        self.assertEqual(0, res[0].used_prefixes_v6)
        self.assertEqual(18446744073709551616, res[0].total_addresses_v6)
        self.assertEqual(0, res[0].used_addresses_v6)
        self.assertEqual(18446744073709551616, res[0].free_addresses_v6)
示例#23
0
 def delete_pool(self, name):
     if len(name) > 0:
         pool = Pool.list({"name": name})
         try:
             pool.remove()
         except NipapError as exc:
             print("Error: could not remove pool: %s" % str(exc))
示例#24
0
    def remove(self, id):
        """ Remove pool.
        """

        p = Pool.get(int(id))
        p.remove()
        redirect(url(controller='pool', action='list'))
示例#25
0
    def edit_pool(self, id):
        """ Edit a pool.
        """

        # extract attributes
        p = Pool.get(int(id))
        if 'name' in request.params:
            p.name = request.params.get('name')
        if 'description' in request.params:
            p.description = request.params.get('description')
        if 'default_type' in request.params:
            p.default_type = request.params.get('default_type')
        if 'ipv4_default_prefix_length' in request.params:
            if request.params['ipv4_default_prefix_length'].strip() != '':
                p.ipv4_default_prefix_length = request.params[
                    'ipv4_default_prefix_length']
            else:
                p.ipv4_default_prefix_length = None
        if 'ipv6_default_prefix_length' in request.params:
            if request.params['ipv6_default_prefix_length'].strip() != '':
                p.ipv6_default_prefix_length = request.params[
                    'ipv6_default_prefix_length']
            else:
                p.ipv6_default_prefix_length = None

        try:
            p.save()
        except NipapError, e:
            return json.dumps({
                'error': 1,
                'message': e.args,
                'type': type(e).__name__
            })
示例#26
0
 def get_pools(self):
     self.lock.acquire()
     try:
         self.pools = Pool.list()
     except Exception as e:
         self.lock.release()
         raise e
     self.lock.release()
示例#27
0
文件: xhr.py 项目: fredsod/NIPAP
    def edit_prefix(self, id):
        """ Edit a prefix.
        """

        try:
            p = Prefix.get(int(id))

            # extract attributes
            if 'prefix' in request.json:
                p.prefix = validate_string(request.json, 'prefix')
            if 'type' in request.json:
                p.type = validate_string(request.json, 'type')
            if 'description' in request.json:
                p.description = validate_string(request.json, 'description')
            if 'expires' in request.json:
                p.expires = validate_string(request.json, 'expires')
            if 'comment' in request.json:
                p.comment = validate_string(request.json, 'comment')
            if 'node' in request.json:
                p.node = validate_string(request.json, 'node')
            if 'status' in request.json:
                p.status = validate_string(request.json, 'status')

            if 'pool' in request.json:
                if request.json['pool'] is None:
                    p.pool = None
                else:
                    try:
                        p.pool = Pool.get(int(request.json['pool']))
                    except NipapError, e:
                        return json.dumps({'error': 1, 'message': e.args, 'type': type(e).__name__})

            if 'alarm_priority' in request.json:
                p.alarm_priority = validate_string(request.json, 'alarm_priority')
            if 'monitor' in request.json:
                if request.json['monitor'] == 'true':
                    p.monitor = True
                else:
                    p.monitor = False

            if 'country' in request.json:
                p.country = validate_string(request.json, 'country')
            if 'order_id' in request.json:
                p.order_id = validate_string(request.json, 'order_id')
            if 'customer_id' in request.json:
                p.customer_id = validate_string(request.json, 'customer_id')

            if 'vrf' in request.json:

                try:
                    if request.json['vrf'] is None or len(unicode(request.json['vrf'])) == 0:
                        p.vrf = None
                    else:
                        p.vrf = VRF.get(int(request.json['vrf']))
                except ValueError:
                    return json.dumps({'error': 1, 'message': "Invalid VRF ID '%s'" % request.json['vrf']})
                except NipapError, e:
                    return json.dumps({'error': 1, 'message': e.args, 'type': type(e).__name__})
示例#28
0
文件: xhr.py 项目: tobbakko/NIPAP
    def list_pool(self):
        """ List pools and return JSON encoded result.
        """

        try:
            schema = Schema.get(int(request.params['schema']))
            pools = Pool.list(schema)
        except NipapError, e:
            return json.dumps({'error': 1, 'message': e.args, 'type': type(e).__name__})
示例#29
0
文件: nipaptest.py 项目: Cougar/NIPAP
 def add_pool(self, name, default_type, ipv4_default_prefix_length, ipv6_default_prefix_length):
     pool = Pool()
     pool.name = name
     pool.default_type = default_type
     pool.ipv4_default_prefix_length = ipv4_default_prefix_length
     pool.ipv6_default_prefix_length = ipv6_default_prefix_length
     pool.save()
     return pool
示例#30
0
文件: prefix.py 项目: tobbakko/NIPAP
    def add(self):
        """ Add a prefix.
        """

        # make sure we have a schema
        try:
            c.schema = Schema.get(int(request.params['schema']))
            c.pools = Pool.list(c.schema)
        except (KeyError, NipapNonExistentError), e:
            redirect(url(controller = 'schema', action = 'list'))
示例#31
0
 def add_pool(self, name, description, default_type, ipv4_default_prefix_length):
     pool = Pool()
     pool.name = name
     pool.description = description
     pool.default_type = default_type
     pool.ipv4_default_prefix_length = ipv4_default_prefix_length
     try:
         pool.save()
         return pool
     except NipapError as exc:
         print("Error: could not add pool to NIPAP: %s" % str(exc))
         return None
示例#32
0
文件: xhr.py 项目: fredsod/NIPAP
    def remove_pool(self, id):
        """ Remove a pool.
        """

        try:
            pool = Pool.get(int(id))
            pool.remove()

        except NipapError, e:
            return json.dumps({'error': 1, 'message': e.args, 'type': type(e).__name__})
示例#33
0
文件: pool.py 项目: tobbakko/NIPAP
    def list(self):
        """ Displays a list of pools.
        """

        if 'schema' not in request.params:
            redirect(url(controller = 'schema', action = 'list'))
        c.schema = Schema.get(int(request.params['schema']))

        c.pools = Pool.list(c.schema)

        return render('/pool_list.html')
示例#34
0
文件: xhr.py 项目: fredsod/NIPAP
    def list_pool(self):
        """ List pools and return JSON encoded result.
        """

        # fetch attributes from request.json
        attr = XhrController.extract_pool_attr(request.json)

        try:
            pools = Pool.list(attr)
        except NipapError, e:
            return json.dumps({'error': 1, 'message': e.args, 'type': type(e).__name__})
示例#35
0
文件: pool.py 项目: tobbakko/NIPAP
    def remove(self, id):
        """ Remove pool.
        """

        if 'schema' not in request.params:
            redirect(url(controller = 'schema', action = 'list'))
        schema = Schema.get(int(request.params['schema']))

        p = Pool.get(schema, int(id))
        p.remove()
        redirect(url(controller = 'pool', action = 'list', schema = schema.id))
示例#36
0
def add_pool(arg, opts):
    """ Add a pool.
    """

    p = Pool()
    p.schema = get_schema(opts.get('schema'))
    p.name = opts.get('name')
    p.description = opts.get('description')
    p.default_type = opts.get('default-type')
    p.ipv4_default_prefix_length = opts.get('ipv4_default_prefix_length')
    p.ipv6_default_prefix_length = opts.get('ipv6_default_prefix_length')

    try:
        p.save()
    except pynipap.NipapError, e:
        print >> sys.stderr, "Could not add pool to NIPAP: %s" % e.message
        sys.exit(1)
示例#37
0
文件: nipaptest.py 项目: Cougar/NIPAP
    def add_prefix(self, prefix, type, description, tags=[], pool_id=None):

        p = Prefix()
        p.prefix = prefix
        p.type = type
        p.description = description
        p.tags = tags
        if pool_id:
            pool = Pool.get(pool_id)
            p.pool = pool
        p.save()
        return p
示例#38
0
    def remove_pool(self, id):
        """ Remove a pool.
        """

        try:
            pool = Pool.get(int(id))
            pool.remove()

        except NipapError, e:
            return json.dumps({
                'error': 1,
                'message': e.args,
                'type': type(e).__name__
            })
示例#39
0
    def add_prefix(self, id):
        """ Add a prefix to pool 'id'
        """

        if 'prefix' not in request.params:
            abort(400, 'Missing prefix.')

        pool = Pool.get(int(id))

        prefix = Prefix.get(int(request.params['prefix']))
        prefix.pool = pool
        prefix.save()

        redirect(url(controller = 'pool', action = 'edit', id = id))
示例#40
0
    def add_prefix(self, id):
        """ Add a prefix to pool 'id'
        """

        if 'prefix' not in request.params:
            abort(400, 'Missing prefix.')

        pool = Pool.get(int(id))

        prefix = Prefix.get(int(request.params['prefix']))
        prefix.pool = pool
        prefix.save()

        redirect(url(controller='pool', action='edit', id=id))
示例#41
0
def add_prefix(arg, opts):
    """ Add prefix to NIPAP
    """

    s = get_schema()

    p = Prefix()
    p.schema = s
    p.prefix = opts.get('prefix')
    p.type = opts.get('type')
    p.description = opts.get('description')
    p.node = opts.get('node')
    p.country = opts.get('country')
    p.order_id = opts.get('order_id')
    p.vrf = opts.get('vrf')
    p.alarm_priority = opts.get('alarm_priority')
    p.comment = opts.get('comment')
    p.monitor = _str_to_bool(opts.get('monitor'))

    args = {}
    if 'from-pool' in opts:
        res = Pool.list(s, { 'name': opts['from-pool'] })
        if len(res) == 0:
            print >> sys.stderr, "No pool named %s found." % opts['from-pool']
            sys.exit(1)

        args['from-pool'] = res[0]

    if 'from-prefix' in opts:
        args['from-prefix'] = [ opts['from-prefix'], ]

    if 'prefix-length' in opts:
        args['prefix_length'] = int(opts['prefix-length'])

    if 'family' in opts:
        family = opts['family']
        if opts['family'] == 'ipv4':
            family = 4
        elif opts['family'] == 'ipv6':
            family = 6

        args['family'] = family


    try:
        p.save(args)
    except NipapError, e:
        print >> sys.stderr, "Could not add prefix to NIPAP: %s" % e.message
        sys.exit(1)
示例#42
0
    def list_pool(self):
        """ List pools and return JSON encoded result.
        """

        # fetch attributes from request.json
        attr = XhrController.extract_pool_attr(request.json)

        try:
            pools = Pool.list(attr)
        except NipapError, e:
            return json.dumps({
                'error': 1,
                'message': e.args,
                'type': type(e).__name__
            })
示例#43
0
    def remove_pool(self, id):
        """ Remove a pool.
        """

        try:
            pool = Pool.get(int(id))
            name = pool.name
            pool.remove()
            log.info('remove_pool (%s) %s' % (session['user'], name))

        except NipapError, e:
            return json.dumps({
                'error': 1,
                'message': e.args,
                'type': type(e).__name__
            })
示例#44
0
    def add(self):
        """ Add a pool.
        """

        # Adding to NIPAP
        if request.method == 'POST':
            p = Pool()
            p.name = request.params.get('name')
            p.description = request.params.get('description')
            p.default_type = request.params.get('default_type')

            if request.params['ipv4_default_prefix_length'].strip() != '':
                p.ipv4_default_prefix_length = request.params[
                    'ipv4_default_prefix_length']

            if request.params['ipv6_default_prefix_length'].strip() != '':
                p.ipv6_default_prefix_length = request.params[
                    'ipv6_default_prefix_length']

            p.save()
            redirect(url(controller='pool', action='list'))

        return render("/pool_add.html")
示例#45
0
文件: xhr.py 项目: sohonet/NIPAP
    def add_pool(self):
        """ Add a pool.
        """

        # extract attributes
        p = Pool()
        p.name = request.params.get('name')
        p.description = request.params.get('description')
        p.default_type = request.params.get('default_type')
        if 'ipv4_default_prefix_length' in request.params:
            if request.params['ipv4_default_prefix_length'].strip() != '':
                p.ipv4_default_prefix_length = request.params['ipv4_default_prefix_length']
        if 'ipv6_default_prefix_length' in request.params:
            if request.params['ipv6_default_prefix_length'].strip() != '':
                p.ipv6_default_prefix_length = request.params['ipv6_default_prefix_length']

        try:
           p.save()
        except NipapError, e:
            return json.dumps({'error': 1, 'message': e.args, 'type': type(e).__name__})
示例#46
0
def remove_pool(arg, opts):
    """ Remove pool
    """

    s = get_schema()
    res = Pool.list(s, { 'name': arg })
    if len(res) < 1:
        print >> sys.stderr, "No pool with name %s found." % arg
        sys.exit(1)

    p = res[0]

    res = raw_input("Do you really want to remove the pool %s? [y/n]: " % p.name)

    if res == 'y':
        p.remove()
        print "Pool %s removed." % p.name
    else:
        print "Operation canceled."
示例#47
0
 def get_pools(self, name=''):
     if len(name) > 0:
         pools = Pool.list({"name": name})
     else:
         pools = Pool.list()
     return pools
示例#48
0
                sys.stdout.write(".")
                sys.stdout.flush()
            print " done!"

    if args.clear_pools:
        remove_confirmed = args.force
        if not remove_confirmed:
            res = raw_input("Are you sure you want to remove all pools? [y/N]")
            if len(res) > 0 and res.lower()[0] == 'y':
                remove_confirmed = True
            else:
                print "Operation aborted."

        if remove_confirmed:
            print "Removing: ",
            for p in Pool.list():
                p.remove()
                sys.stdout.write(".")
                sys.stdout.flush()
            print " done!"

    if args.clear_prefixes:
        remove_confirmed = args.force
        if not remove_confirmed:
            res = raw_input("Are you sure you want to remove all prefixes? [y/N]")
            if len(res) > 0 and res.lower()[0] == 'y':
                remove_confirmed = True
            else:
                print "Aborted"

        if remove_confirmed:
示例#49
0
        if 'comment' in request.params:
            if request.params['comment'].strip() != '':
                p.comment = request.params['comment'].strip()

        if 'node' in request.params:
            if request.params['node'].strip() != '':
                p.node = request.params['node'].strip()

        if 'type' in request.params:
            p.type = request.params['type'].strip()

        if 'pool' in request.params:
            if request.params['pool'].strip() != '':
                try:
                    p.pool = Pool.get(int(request.params['pool']))
                except NipapError, e:
                    return json.dumps({
                        'error': 1,
                        'message': e.args,
                        'type': type(e).__name__
                    })

        if 'country' in request.params:
            if request.params['country'].strip() != '':
                p.country = request.params['country'].strip()

        if 'order_id' in request.params:
            if request.params['order_id'].strip() != '':
                p.order_id = request.params['order_id'].strip()
示例#50
0
    def add_pool(self):
        """ Add a pool.
        """

        # extract attributes
        p = Pool()
        if 'name' in request.json:
            p.name = validate_string(request.json, 'name')
        if 'description' in request.json:
            p.description = validate_string(request.json, 'description')
        if 'default_type' in request.json:
            p.default_type = validate_string(request.json, 'default_type')
        # TODO: handle integers
        if 'ipv4_default_prefix_length' in request.json:
            p.ipv4_default_prefix_length = request.json[
                'ipv4_default_prefix_length']
        if 'ipv6_default_prefix_length' in request.json:
            p.ipv6_default_prefix_length = request.json[
                'ipv6_default_prefix_length']
        if 'tags' in request.json:
            p.tags = request.json['tags']
        if 'avps' in request.json:
            p.avps = request.json['avps']

        try:
            p.save()
            log.info('add_pool (%s) %s' % (session['user'], request.json))
        except NipapError, e:
            return json.dumps({
                'error': 1,
                'message': e.args,
                'type': type(e).__name__
            })
示例#51
0
    _register_inet(conn_or_curs=con_pg_new)

    # set up pynipap
    aopts = pynipap.AuthOptions({'authoritative_source': 'nipap'})
    pynipap.xmlrpc_uri = nipapd_xmlrpc_uri

    #
    # Create pools
    #
    print "Creating pools... ",
    sql = "SELECT * FROM ip_net_pool"
    curs_pg_old.execute(sql)
    pools = {}
    for r in curs_pg_old:
        p = Pool()
        p.name = r['name']
        p.description = r['description']
        p.default_type = r['default_type']
        p.ipv4_default_prefix_length = r['ipv4_default_prefix_length']
        p.ipv6_default_prefix_length = r['ipv6_default_prefix_length']
        try:
            p.save()
        except NipapError, e:
            print "ERR: %s" % str(e)
        pools[r['id']] = p

        # remove new audit log entries
        sql = "DELETE FROM ip_net_log WHERE pool_id = %s"
        curs_pg_new.execute(sql, (p.id, ))
示例#52
0
 def test_list_pool(self):
     """ We should be able to execute list_pool as read-only user
     """
     with self.assertRaises(NipapNonExistentError):
         p = Pool.get(0)
示例#53
0
 def test_smart_search_pool(self):
     """ We should be able to execute smart_search_pool as read-only user
     """
     p = Pool.smart_search('default')
示例#54
0
    def edit_prefix(self, id):
        """ Edit a prefix.
        """

        try:
            p = Prefix.get(int(id))

            # extract attributes
            if 'prefix' in request.params:
                p.prefix = request.params['prefix']

            if 'type' in request.params:
                p.type = request.params['type'].strip()

            if 'description' in request.params:
                if request.params['description'].strip() == '':
                    p.description = None
                else:
                    p.description = request.params['description'].strip()

            if 'comment' in request.params:
                if request.params['comment'].strip() == '':
                    p.comment = None
                else:
                    p.comment = request.params['comment'].strip()

            if 'node' in request.params:
                if request.params['node'].strip() == '':
                    p.node = None
                else:
                    p.node = request.params['node'].strip()

            if 'pool' in request.params:
                if request.params['pool'].strip() == '':
                    p.pool = None
                else:
                    try:
                        p.pool = Pool.get(int(request.params['pool']))
                    except NipapError, e:
                        return json.dumps({
                            'error': 1,
                            'message': e.args,
                            'type': type(e).__name__
                        })

            if 'alarm_priority' in request.params:
                p.alarm_priority = request.params['alarm_priority'].strip()

            if 'monitor' in request.params:
                if request.params['monitor'] == 'true':
                    p.monitor = True
                else:
                    p.monitor = False

            if 'country' in request.params:
                if request.params['country'].strip() == '':
                    p.country = None
                else:
                    p.country = request.params['country'].strip()

            if 'order_id' in request.params:
                if request.params['order_id'].strip() == '':
                    p.order_id = None
                else:
                    p.order_id = request.params['order_id'].strip()

            if 'customer_id' in request.params:
                if request.params['customer_id'].strip() == '':
                    p.customer_id = None
                else:
                    p.customer_id = request.params['customer_id'].strip()

            if 'vrf' in request.params:

                try:
                    if request.params['vrf'] is None or len(
                            request.params['vrf']) == 0:
                        p.vrf = None
                    else:
                        p.vrf = VRF.get(int(request.params['vrf']))
                except ValueError:
                    return json.dumps({
                        'error':
                        1,
                        'message':
                        "Invalid VRF ID '%s'" % request.params['vrf']
                    })
                except NipapError, e:
                    return json.dumps({
                        'error': 1,
                        'message': e.args,
                        'type': type(e).__name__
                    })
示例#55
0
            p.description = validate_string(request.json, 'description')
        if 'expires' in request.json:
            p.expires = validate_string(request.json, 'expires')
        if 'comment' in request.json:
            p.comment = validate_string(request.json, 'comment')
        if 'node' in request.json:
            p.node = validate_string(request.json, 'node')
        if 'status' in request.json:
            p.status = validate_string(request.json, 'status')
        if 'type' in request.json:
            p.type = validate_string(request.json, 'type')

        if 'pool' in request.json:
            if request.json['pool'] is not None:
                try:
                    p.pool = Pool.get(int(request.json['pool']))
                except NipapError, e:
                    return json.dumps({
                        'error': 1,
                        'message': e.args,
                        'type': type(e).__name__
                    })

        if 'country' in request.json:
            p.country = validate_string(request.json, 'country')
        if 'order_id' in request.json:
            p.order_id = validate_string(request.json, 'order_id')
        if 'customer_id' in request.json:
            p.customer_id = validate_string(request.json, 'customer_id')
        if 'alarm_priority' in request.json:
            p.alarm_priority = validate_string(request.json, 'alarm_priority')
示例#56
0
    def edit_prefix(self, id):
        """ Edit a prefix.
        """

        try:
            p = Prefix.get(int(id))

            # extract attributes
            if 'prefix' in request.json:
                p.prefix = validate_string(request.json, 'prefix')
            if 'type' in request.json:
                p.type = validate_string(request.json, 'type')
            if 'description' in request.json:
                p.description = validate_string(request.json, 'description')
            if 'expires' in request.json:
                p.expires = validate_string(request.json, 'expires')
            if 'comment' in request.json:
                p.comment = validate_string(request.json, 'comment')
            if 'node' in request.json:
                p.node = validate_string(request.json, 'node')
            if 'status' in request.json:
                p.status = validate_string(request.json, 'status')

            if 'pool' in request.json:
                if request.json['pool'] is None:
                    p.pool = None
                else:
                    try:
                        p.pool = Pool.get(int(request.json['pool']))
                    except NipapError, e:
                        return json.dumps({
                            'error': 1,
                            'message': e.args,
                            'type': type(e).__name__
                        })

            if 'alarm_priority' in request.json:
                p.alarm_priority = validate_string(request.json,
                                                   'alarm_priority')
            if 'monitor' in request.json:
                if request.json['monitor'] == 'true':
                    p.monitor = True
                else:
                    p.monitor = False

            if 'country' in request.json:
                p.country = validate_string(request.json, 'country')
            if 'order_id' in request.json:
                p.order_id = validate_string(request.json, 'order_id')
            if 'customer_id' in request.json:
                p.customer_id = validate_string(request.json, 'customer_id')

            if 'vrf' in request.json:

                try:
                    if request.json['vrf'] is None or len(
                            unicode(request.json['vrf'])) == 0:
                        p.vrf = None
                    else:
                        p.vrf = VRF.get(int(request.json['vrf']))
                except ValueError:
                    return json.dumps({
                        'error':
                        1,
                        'message':
                        "Invalid VRF ID '%s'" % request.json['vrf']
                    })
                except NipapError, e:
                    return json.dumps({
                        'error': 1,
                        'message': e.args,
                        'type': type(e).__name__
                    })
示例#57
0
 def test_search_pool(self):
     """ We should be able to execute search_pool as read-only user
     """
     p = Pool.search({ 'val1': 'id',
         'operator': 'equals',
         'val2': 0 })