Example #1
0
        def inner(self, request, *args, **kwargs):

            try:
                return func(self, request, *args, **kwargs)
            except ValidationError, error:

                msg = list()

                if error.flatten():
                    for pointer, reasons in error.flatten().items():
                        valor = resolve(error[1],
                                        pointer) if pointer != '#/' else ''
                        msg.append({
                            'error_pointer': pointer,
                            'received_value': valor,
                            'error_reasons': list(reasons)
                        })
                else:
                    msg.append({
                        'error_pointer': error[0],
                        'received_value': None,
                        'error_reasons': list(error[1])
                    })
                res = {'errors': msg}
                if info:
                    protocol = 'https' if request.is_secure() else 'http'
                    res['spec'] = '%s://%s/api/v3/help/%s/' % (
                        protocol, request.get_host(), info)
                log.error(res)
                raise rest_exceptions.ValidationExceptionJson(res)
Example #2
0
 def test_fs_provider(self):
     """docstring for test_fs_provider"""
     obj = {
         'foo': {'$ref': 'test:first.data1#/address'}
     }
     provider = FilesystemProvider(fixture_dirname, prefix='test:')
     assert 'Mount Vernon, Virginia, United States' == resolve(obj, '#/foo', registry=provider)  # noqa
        def inner(self, request, *args, **kwargs):

            try:
                return func(self, request, *args, **kwargs)

            except ValidationError, error:

                msg = list()

                if error.flatten():
                    for pointer, reasons in error.flatten().items():
                        valor = resolve(
                            error[1], pointer) if pointer != '#/' else ''
                        msg.append({
                            'error_pointer': pointer,
                            'received_value': valor,
                            'error_reasons': list(reasons)
                        })
                else:
                    msg.append({
                        'error_pointer': error[0],
                        'received_value': None,
                        'error_reasons': list(error[1])
                    })
                res = {
                    'errors': msg
                }
                if info:
                    protocol = 'https' if request.is_secure() else 'http'
                    res['spec'] = '%s://%s/api/v3/help/%s/' % (
                        protocol, request.get_host(), info)
                log.error(res)
                raise rest_exceptions.ValidationExceptionJson(res)
Example #4
0
 def _process_ref(self):
     """
     resolve all references util no reference exists
     """
     for path, ref in self.search(['**', '$ref']):
         data = resolve(self.data, ref)
         path = path[:-1]
         self.set(path, RefNode(data, ref))
 def _process_ref(self):
     """
     resolve all references util no reference exists
     """
     for path, ref in self.search(['**', '$ref']):
         data = resolve(self.data, ref)
         path = path[:-1]
         self.set(path, RefNode(data, ref))
Example #6
0
    def test_inner_reference(self):
        obj = {
            'foo': ['bar', 'baz', {
                '$ref': '#/sub'
            }],
            'sub': 'quux'
        }

        assert 'quux' == resolve(obj, '#/foo/2')
Example #7
0
def verify_ports_vip(vips):
    for idx, vip in enumerate(vips['vips']):
        pts = list()
        for port in vip['ports']:
            if port['port']:
                pts.append(resolve(port, '#/port'))

        if len(pts) != len(list(set(pts))):
            raise ValidationError('Vip has same ports',
                                  ['#vips/%s/ports/*/port ' % (idx)])
Example #8
0
    def test_outside_reference(self):
        obj = {
            'foo': ['bar', 'baz', {
                '$ref': 'obj2#/sub'
            }]
        }
        registry = {
            'obj2': {'sub': 'quux'}
        }

        assert 'quux' == resolve(obj, '#/foo/2', registry=registry)
def verify_ports_vip(vips):
    for idx, vip in enumerate(vips['vips']):
        pts = list()
        for port in vip['ports']:
            if port['port']:
                pts.append(resolve(port, '#/port'))

        if len(pts) != len(list(set(pts))):
            raise ValidationError(
                'Vip has same ports',
                ['#vips/%s/ports/*/port ' % (idx)])
Example #10
0
def verify_ports(pools):
    for idx, pool in enumerate(pools['server_pools']):
        ips = list()
        v6 = list()
        for member in pool['server_pool_members']:
            if member['ip']:
                ips.append((resolve(member, '#/ip/id'),
                            resolve(member, '#/port_real')))
            if member['ipv6']:
                v6.append((resolve(member, '#/ipv6/id'),
                           resolve(member, '#/port_real')))

        if len(ips) != len(list(set(ips))):
            raise ValidationError(
                'Ips have same ports',
                ['#server_pools/%s/server_pool_members/*/ip/id - #server_pools/%s/server_pool_members/*/port_real' % (idx, idx)])
        if len(v6) != len(list(set(v6))):
            raise ValidationError(
                'Ipv6 have same ports',
                ['#server_pools/%s/server_pool_members/*/ipv6/id - #server_pools/%s/server_pool_members/*/port_real' % (idx, idx)])
Example #11
0
 def _process_ref(self):
     """
     resolve all references util no reference exists
     """
     while 1:
         li = list(self.search(['**', '$ref']))
         if not li:
             break
         for path, ref in li:
             data = resolve(self.data, ref)
             path = path[:-1]
             self.set(path, data)
Example #12
0
def verify_ports(pools):
    for idx, pool in enumerate(pools['server_pools']):
        ips = list()
        v6 = list()
        for member in pool['server_pool_members']:
            if member['ip']:
                ips.append((resolve(member,
                                    '#/ip/id'), resolve(member,
                                                        '#/port_real')))
            if member['ipv6']:
                v6.append(
                    (resolve(member,
                             '#/ipv6/id'), resolve(member, '#/port_real')))

        if len(ips) != len(list(set(ips))):
            raise ValidationError('Ips have same ports', [
                '#server_pools/%s/server_pool_members/*/ip/id - #server_pools/%s/server_pool_members/*/port_real'
                % (idx, idx)
            ])
        if len(v6) != len(list(set(v6))):
            raise ValidationError('Ipv6 have same ports', [
                '#server_pools/%s/server_pool_members/*/ipv6/id - #server_pools/%s/server_pool_members/*/port_real'
                % (idx, idx)
            ])
from jsonspec.reference import resolve

obj = {
    'foo': ['bar', 'baz', {
        '$ref': '#/sub'
    }],
    'sub': 'quux'
}

assert 'quux' == resolve(obj, '#/foo/2')
Example #14
0
from jsonspec.reference import resolve

obj = {'foo': ['bar', 'baz', {'$ref': '#/sub'}], 'sub': 'quux'}

assert 'quux' == resolve(obj, '#/foo/2')
Example #15
0
def test_fs_provider():
    """docstring for test_fs_provider"""
    obj = {'foo': {'$ref': 'test:first.data1#/address'}}
    provider = FilesystemProvider(fixture_dir, prefix='test:')
    assert 'Mount Vernon, Virginia, United States' == resolve(
        obj, '#/foo', registry=provider)  # noqa
Example #16
0
def test_outside_reference():
    obj = {'foo': ['bar', 'baz', {'$ref': 'obj2#/sub'}]}
    registry = {'obj2': {'sub': 'quux'}}

    assert 'quux' == resolve(obj, '#/foo/2', registry=registry)
Example #17
0
def test_inner_reference():
    obj = {'foo': ['bar', 'baz', {'$ref': '#/sub'}], 'sub': 'quux'}

    assert 'quux' == resolve(obj, '#/foo/2')
Example #18
0
def test_local():
    obj = {'foo': ['bar', 'baz']}

    assert 'baz' == resolve(obj, '#/foo/1')
Example #19
0
    def test_local(self):
        obj = {
            'foo': ['bar', 'baz']
        }

        assert 'baz' == resolve(obj, '#/foo/1')