Exemple #1
0
def main():
    parser = OptionParser()
    parser.add_option("-m", "--master", action="store", dest="master", help="Master URI", metavar="MASTER", default=os.getenv("SW_MASTER"))
    parser.add_option("-i", "--id", action="store", dest="id", help="Job ID", metavar="ID", default="default")
    parser.add_option("-e", "--env", action="store_true", dest="send_env", help="Set this flag to send the current environment with the script as _env", default=False)
    (options, args) = parser.parse_args()
   
    if not options.master:
        parser.print_help()
        print >> sys.stderr, "Must specify master URI with --master"
        sys.exit(1)

    if len(args) != 1:
        parser.print_help()
        print >> sys.stderr, "Must specify one script file to execute, as argument"
        sys.exit(1)

    script_name = args[0]
    master_uri = options.master
    id = options.id
    
    print id, "STARTED", now_as_timestamp()

    swi_package = {"swimain": {"filename": script_name}}
    swi_args = {"sw_file_ref": {"__package__": "swimain"}, "start_args": args}
    if options.send_env:
        swi_args["start_env"] = dict(os.environ)

    new_job = skywriting.runtime.util.start_job.submit_job_with_package(swi_package, "swi", swi_args, os.getcwd(), master_uri)
    
    result = skywriting.runtime.util.start_job.await_job(new_job["job_id"], master_uri)
    
    reflist = retrieve_object_for_ref(result, "json", None)
    sw_return = retrieve_object_for_ref(reflist[0], "json", None)
    return sw_return
Exemple #2
0
def main():
    parser = OptionParser()
    parser.add_option("-m", "--master", action="store", dest="master", help="Master URI", metavar="MASTER", default=os.getenv("SW_MASTER"))
    parser.add_option("-s", "--skypy-stub", action="store", dest="skypy_stub", help="Path to Skypy stub.py", metavar="PATH", default=None)
    (options, args) = parser.parse_args()
   
    if not options.master:
        parser.print_help()
        print >> sys.stderr, "Must specify master URI with --master"
        sys.exit(1)

    master_uri = options.master
    
    script_name = args[0]
    script_args = args[1:]

    sp_package = {"skypymain": {"filename": script_name}}
    sp_args = {"pyfile_ref": {"__package__": "skypymain"}, "entry_point": "skypy_main", "entry_args": script_args}

    new_job = skywriting.runtime.util.start_job.submit_job_with_package(sp_package, "skypy", sp_args, os.getcwd(), master_uri, args)
    
    result = skywriting.runtime.util.start_job.await_job(new_job["job_id"], master_uri)

    reflist = retrieve_object_for_ref(result, "json", None)

    return reflist[0]
Exemple #3
0
def simple_retrieve_object_for_ref(ref, decoder, jobid, master_uri):
    if isinstance(ref, SWErrorReference):
        raise Exception("Can't decode %s" % ref)
    if isinstance(ref, SW2_FutureReference) or isinstance(ref, SW2_StreamReference) or isinstance(ref, SW2_SocketStreamReference):
        ref = external_get_real_ref(ref, jobid, master_uri)
    if isinstance(ref, SWDataValue):
        return retrieve_object_for_ref(ref, decoder, None)
    elif isinstance(ref, SW2_ConcreteReference):
        urls = get_fetch_urls_for_ref(ref)
        _, content = httplib2.Http().request(urls[0])
        return decoders[decoder](StringIO(content))
    else:
        raise Exception("Don't know how to retrieve a %s" % ref)
Exemple #4
0
def main():
    parser = OptionParser()
    parser.add_option(
        "-m",
        "--master",
        action="store",
        dest="master",
        help="Master URI",
        metavar="MASTER",
        default=os.getenv("SW_MASTER"),
    )
    parser.add_option(
        "-r",
        "--refs",
        action="store_true",
        dest="refs",
        help="Set this option to look up reference names in the master",
        default=False,
    )
    parser.add_option(
        "-j",
        "--json",
        action="store_true",
        dest="json",
        help="Set this option to use JSON pretty printing",
        default=False,
    )
    (options, args) = parser.parse_args()

    if options.refs:
        ref_ids = args

        for ref_id in ref_ids:

            # Fetch information about the ref from the master.
            h = httplib2.Http()
            _, content = h.request(urljoin(options.master, "/refs/%s" % ref_id), "GET")
            ref_info = simplejson.loads(content, object_hook=json_decode_object_hook)
            ref = ref_info["ref"]

            if options.json:
                obj = retrieve_object_for_ref(ref, "json", None)
                simplejson.dump(obj, sys.stdout, cls=SWReferenceJSONEncoder, indent=4)
                print
            else:
                fh = retrieve_object_for_ref(ref, "handle", None)
                for line in fh:
                    sys.stdout.write(line)
                fh.close()

    else:
        urls = args

        for url in urls:
            if options.json:
                obj = retrieve_object_for_ref(SWURLReference([url]), "json", None)
                simplejson.dump(obj, sys.stdout, cls=SWReferenceJSONEncoder, indent=4)
                print
            else:
                fh = retrieve_object_for_ref(SWURLReference([url]), "handle", None)
                print fh
                for line in fh:
                    sys.stdout.write(line)
                fh.close()