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)
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)
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 test_inner_reference(self): obj = { 'foo': ['bar', 'baz', { '$ref': '#/sub' }], 'sub': 'quux' } assert 'quux' == resolve(obj, '#/foo/2')
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)])
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)])
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)])
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)
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')
from jsonspec.reference import resolve obj = {'foo': ['bar', 'baz', {'$ref': '#/sub'}], 'sub': 'quux'} assert 'quux' == resolve(obj, '#/foo/2')
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
def test_outside_reference(): obj = {'foo': ['bar', 'baz', {'$ref': 'obj2#/sub'}]} registry = {'obj2': {'sub': 'quux'}} assert 'quux' == resolve(obj, '#/foo/2', registry=registry)
def test_inner_reference(): obj = {'foo': ['bar', 'baz', {'$ref': '#/sub'}], 'sub': 'quux'} assert 'quux' == resolve(obj, '#/foo/2')
def test_local(): obj = {'foo': ['bar', 'baz']} assert 'baz' == resolve(obj, '#/foo/1')
def test_local(self): obj = { 'foo': ['bar', 'baz'] } assert 'baz' == resolve(obj, '#/foo/1')