Exemplo n.º 1
0
def _save_layer(layer, state):
    index_by_id = _index_by_id(state)
    if not index_by_id.has_key(layer.id):
        index_by_id[layer.id] = len(index_by_id)
    _layer_by_id(state)[layer.id] = layer
    render.create_renderer(layer, _renderers(state))
    return layer.bounds()
Exemplo n.º 2
0
def occi_render_init():
    """Initialize pOCCI renderers.

    Limitations:
       - For HTTP GET requests 'text/occi' is always needed
       - For bigger data 'text/occi' should not be used (using 'text/plain')
    """
    mimetypes = ["text/plain", "text/occi"]
    self = sys.modules[__name__]

    # renderers always needed
    for mime in mimetypes:
        renderers[mime] = render.create_renderer(mime)

    # user configurable renderer
    if occi_config["mimetype"] in mimetypes:
        renderer = renderers[occi_config["mimetype"]]
    else:
        renderer = render.create_renderer(occi_config["mimetype"])

    # big data requires anything except HTTP Headers renderer
    renderer_big = renderer
    if occi_config["mimetype"] != occi_config["mimetype.big"]:
        if occi_config["mimetype.big"] in mimetypes:
            renderer_big = renderers[occi_config["mimetype.big"]]
        else:
            renderer_big = render.create_renderer(occi_config["mimetype.big"])

    # HTTP GET requests needs HTTP Headers renderer
    renderer_httpheaders = renderer
    if occi_config["mimetype"] != "text/occi":
        renderer_httpheaders = renderers["text/occi"]

    # configurable filters
    for f in ["tests.category", "tests.entity"]:
        if f in occi_config:
            try:
                categories = renderers["text/plain"].parse_categories([occi_config[f]], None)
            except occi.ParseError as pe:
                print >> sys.stderr, ("Can't parse '%s' config option: " % f) + str(pe)
                sys.exit(2)
            if categories:
                occi_config["occi.%s" % f] = categories[0]
            if occi_config["curlverbose"]:
                print ("[config] '%s'=" % f) + str(categories[0])

    self.renderer = renderer
    self.renderer_big = renderer_big
    self.renderer_httpheaders = renderer_httpheaders
Exemplo n.º 3
0
def occi_render_init():
    """Initialize pOCCI renderers.

    Limitations:
       - For HTTP GET requests 'text/occi' is always needed
       - For bigger data 'text/occi' should not be used (using 'text/plain')
    """
    mimetypes = ['text/plain', 'text/occi']
    self = sys.modules[__name__]

    # renderers always needed
    for mime in mimetypes:
        renderers[mime] = render.create_renderer(mime)

    # user configurable renderer
    if occi_config['mimetype'] in mimetypes:
        renderer = renderers[occi_config['mimetype']]
    else:
        renderer = render.create_renderer(occi_config['mimetype'])

    # big data requires anything except HTTP Headers renderer
    renderer_big = renderer
    if occi_config['mimetype'] != occi_config['mimetype.big']:
        if occi_config['mimetype.big'] in mimetypes:
            renderer_big = renderers[occi_config['mimetype.big']]
        else:
            renderer_big = render.create_renderer(occi_config['mimetype.big'])

    # HTTP GET requests needs HTTP Headers renderer
    renderer_httpheaders = renderer
    if occi_config['mimetype'] != 'text/occi':
        renderer_httpheaders = renderers['text/occi']

    self.renderer = renderer
    self.renderer_big = renderer_big
    self.renderer_httpheaders = renderer_httpheaders
Exemplo n.º 4
0
def occi_render_init():
    """Initialize pOCCI renderers.

    Limitations:
       - For HTTP GET requests 'text/occi' is always needed
       - For bigger data 'text/occi' should not be used (using 'text/plain')
    """
    mimetypes = ["text/plain", "text/occi"]
    self = sys.modules[__name__]

    # renderers always needed
    for mime in mimetypes:
        renderers[mime] = render.create_renderer(mime)

    # user configurable renderer
    if occi_config["mimetype"] in mimetypes:
        renderer = renderers[occi_config["mimetype"]]
    else:
        renderer = render.create_renderer(occi_config["mimetype"])

    # big data requires anything except HTTP Headers renderer
    renderer_big = renderer
    if occi_config["mimetype"] != occi_config["mimetype.big"]:
        if occi_config["mimetype.big"] in mimetypes:
            renderer_big = renderers[occi_config["mimetype.big"]]
        else:
            renderer_big = render.create_renderer(occi_config["mimetype.big"])

    # HTTP GET requests needs HTTP Headers renderer
    renderer_httpheaders = renderer
    if occi_config["mimetype"] != "text/occi":
        renderer_httpheaders = renderers["text/occi"]

    self.renderer = renderer
    self.renderer_big = renderer_big
    self.renderer_httpheaders = renderer_httpheaders
Exemplo n.º 5
0
def main(argv=sys.argv[1:]):
    global inputmime, outputmime, messagetype

    occi_parser = None
    occi_renderer = None

    try:
        opts, args = getopt.getopt(
            argv, 'hi:o:t:V',
            ['--help', '--input-mime=', '--output-mime=', 'type=', 'version'])
    except getopt.GetoptError:
        usage()
        sys.exit(2)
    for opt, arg in opts:
        if opt in ['-h', '--help']:
            usage()
            sys.exit()
        elif opt in ['-i', '--input-mime']:
            inputmime = arg
        elif opt in ['-o', '--output-mime']:
            outputmime = arg
        elif opt in ['-t', '--type']:
            messagetype = arg
        elif opt in ["-V", "--version"]:
            print version.__version__
            sys.exit()

    if messagetype not in messagetypes:
        print >> sys.stderr, 'OCCI message type expected: %s' % ', '.join(
            messagetypes)
        sys.exit(2)

    occi_parser = render.create_renderer(inputmime)
    if not occi_parser:
        print >> sys.stderr, 'OCCI parser can\'t be initialized (wrong mime-type "%s"?)' % inputmime
        sys.exit(2)

    occi_renderer = render.create_renderer(outputmime)
    if not occi_renderer:
        print >> sys.stderr, 'OCCI renderer can\'t be initialized (wrong mime-type "%s"?)' % outputmime
        sys.exit(2)

    if re.match(r'text/occi(;.*)?$', inputmime):
        body = None
        headers = list(read_input(strip=False))
    else:
        body = list(read_input(strip=True))
        headers = None

    try:
        if messagetype in ['categories']:
            categories = occi_parser.parse_categories(body, headers)
            [body, headers] = occi_renderer.render_categories(categories)
        elif messagetype in ['entities']:
            urls = occi_parser.parse_locations(body, headers)
            [body, headers] = occi_renderer.render_locations(urls)
        elif messagetype in ['resource']:
            [categories, links,
             attributes] = occi_parser.parse_resource(body, headers)
            [body,
             headers] = occi_renderer.render_resource(categories, links,
                                                      attributes)
    except occi.ParseError as perr:
        print >> sys.stderr, str(perr)
        sys.exit(1)
    except occi.RenderError as rerr:
        print >> sys.stderr, str(rerr)
        sys.exit(1)

    if body:
        sys.stdout.write(body)
    if headers:
        sys.stdout.write('\n'.join(headers) + '\n')
Exemplo n.º 6
0
def main(argv=sys.argv[1:]):
    global inputmime, outputmime, messagetype

    occi_parser = None
    occi_renderer = None

    try:
        opts, args = getopt.getopt(argv, "hi:o:t:V", ["--help", "--input-mime=", "--output-mime=", "type=", "version"])
    except getopt.GetoptError:
        usage()
        sys.exit(2)
    for opt, arg in opts:
        if opt in ["-h", "--help"]:
            usage()
            sys.exit()
        elif opt in ["-i", "--input-mime"]:
            inputmime = arg
        elif opt in ["-o", "--output-mime"]:
            outputmime = arg
        elif opt in ["-t", "--type"]:
            messagetype = arg
        elif opt in ["-V", "--version"]:
            print version.__version__
            sys.exit()

    if messagetype not in messagetypes:
        print >> sys.stderr, "OCCI message type expected: %s" % ", ".join(messagetypes)
        sys.exit(2)

    occi_parser = render.create_renderer(inputmime)
    if not occi_parser:
        print >> sys.stderr, 'OCCI parser can\'t be initialized (wrong mime-type "%s"?)' % inputmime
        sys.exit(2)

    occi_renderer = render.create_renderer(outputmime)
    if not occi_renderer:
        print >> sys.stderr, 'OCCI renderer can\'t be initialized (wrong mime-type "%s"?)' % outputmime
        sys.exit(2)

    if re.match(r"text/occi(;.*)?$", inputmime):
        body = None
        headers = list(read_input(strip=False))
    else:
        body = list(read_input(strip=True))
        headers = None

    try:
        if messagetype in ["categories"]:
            categories = occi_parser.parse_categories(body, headers)
            [body, headers] = occi_renderer.render_categories(categories)
        elif messagetype in ["entities"]:
            urls = occi_parser.parse_locations(body, headers)
            [body, headers] = occi_renderer.render_locations(urls)
        elif messagetype in ["resource"]:
            [categories, links, attributes] = occi_parser.parse_resource(body, headers)
            [body, headers] = occi_renderer.render_resource(categories, links, attributes)
    except occi.ParseError as perr:
        print >> sys.stderr, str(perr)
        sys.exit(1)
    except occi.RenderError as rerr:
        print >> sys.stderr, str(rerr)
        sys.exit(1)

    if body:
        sys.stdout.write(body)
    if headers:
        sys.stdout.write("\n".join(headers) + "\n")