Changeset bf76a61 in osmose-backend


Ignore:
Timestamp:
Apr 22, 2013 10:26:07 PM (7 years ago)
Author:
Jocelyn Jaubert <jocelyn.jaubert@…>
Branches:
master
Children:
14ecf90
Parents:
e7bffdf
git-author:
Jocelyn Jaubert <jocelyn.jaubert@…> (20/04/2013 18:13:45)
git-committer:
Jocelyn Jaubert <jocelyn.jaubert@…> (22/04/2013 22:26:07)
Message:

Add option to use a diff to update pbf file if specified in country configuration

File:
1 edited

Legend:

Unmodified
Added
Removed
  • osmose_run.py

    re7bffdf rbf76a61  
    254254########################################################################### 
    255255 
    256 def init_osmosis_change(conf): 
    257  
    258     logger.log(log_av_r+"init osmosis replication"+log_ap) 
     256def check_osmosis_diff(conf): 
     257 
     258    logger.log("check osmosis replication") 
     259    diff_path = conf.download["diff_path"] 
     260    if not os.path.exists(diff_path): 
     261        return False 
     262 
     263    for f_name in ["configuration.txt", "download.lock", "state.txt"]: 
     264        f = os.path.join(diff_path, f_name) 
     265        if not os.path.exists(f): 
     266            return False 
     267 
     268    return True 
     269 
     270def init_osmosis_diff(conf): 
     271 
     272    logger.log(log_av_r+"init osmosis replication for diff"+log_ap) 
    259273    diff_path = conf.download["diff_path"] 
    260274    if os.path.exists(diff_path): 
     
    285299                   "minute", logger) 
    286300 
     301def run_osmosis_diff(conf): 
     302 
     303    logger.log(log_av_r+"run osmosis replication"+log_ap) 
     304    diff_path = conf.download["diff_path"] 
     305    xml_change = os.path.join(diff_path, "change.osc.gz") 
     306    tmp_pbf_file = conf.download["dst"] + ".tmp" 
     307 
     308    shutil.copyfile(os.path.join(diff_path, "state.txt"), 
     309                    os.path.join(diff_path, "state.txt.old")) 
     310 
     311    try: 
     312        os.environ["JAVACMD_OPTIONS"] = "-Xms2048M -Xmx2048M -XX:MaxPermSize=2048M -Djava.io.tmpdir="+conf.dir_tmp 
     313        cmd  = [conf.osmosis_bin] 
     314        cmd += ["--read-replication-interval", "workingDirectory=%s" % diff_path] 
     315        cmd += ["--simplify-change", "--write-xml-change", "file=%s" % xml_change] 
     316        cmd += ["-quiet"] 
     317        logger.execute_err(cmd) 
     318 
     319        cmd  = [conf.osmosis_bin] 
     320        cmd += ["--read-xml-change", "file=%s" % xml_change] 
     321        cmd += ["--read-pbf", "file=%s" % conf.download["dst"] ] 
     322        cmd += ["--apply-change", "--buffer"] 
     323        cmd += ["--write-pbf", "file=%s" % tmp_pbf_file] 
     324        cmd += ["-quiet"] 
     325        logger.execute_err(cmd) 
     326 
     327        shutil.move(tmp_pbf_file, conf.download["dst"]) 
     328 
     329        return xml_change 
     330 
     331    except: 
     332        logger.log(log_av_r+"got error, aborting"+log_ap) 
     333        shutil.copyfile(os.path.join(diff_path, "state.txt.old"), 
     334                        os.path.join(diff_path, "state.txt")) 
     335 
     336        raise 
     337 
     338########################################################################### 
     339 
     340def check_osmosis_change(conf): 
     341 
     342    if not check_osmosis_diff(conf): 
     343        return False 
     344 
     345    logger.log("check osmosis replication for database") 
     346 
     347    return True 
     348 
     349 
     350def init_osmosis_change(conf): 
     351 
     352    init_osmosis_diff(conf) 
     353 
     354    logger.log(log_av_r+"init osmosis replication for database"+log_ap) 
    287355    if conf.db_schema: 
    288356        db_schema = conf.db_schema 
     
    303371        logger.execute_out(cmd) 
    304372 
    305  
    306373def run_osmosis_change(conf): 
    307374 
     
    358425    country = conf.country 
    359426 
     427    if not check_database(conf): 
     428        logger.log(log_av_r+u"error in database initialisation"+log_ap) 
     429        return 
     430 
    360431    ########################################################################## 
    361432    ## download and create database 
     
    364435        pass 
    365436    
    366     elif options.change and not options.change_init: 
     437    elif options.change and check_osmosis_change(conf) and not options.change_init: 
    367438        xml_change = run_osmosis_change(conf) 
    368439 
    369440    elif "url" in conf.download: 
    370         if not check_database(conf): 
    371             logger.log(log_av_r+u"error in database initialisation"+log_ap) 
    372             return 
    373  
    374         logger.log(log_av_r+u"downloading"+log_ap) 
    375         if options.skip_download: 
     441        if options.diff and check_osmosis_diff(conf): 
     442            xml_change = run_osmosis_diff(conf) 
     443            newer = True  # TODO 
     444 
     445        elif options.skip_download: 
    376446            logger.sub().log("skip download") 
    377447            newer = True 
     448 
    378449        else: 
     450            logger.log(log_av_r+u"downloading"+log_ap) 
    379451            newer = download.dl(conf.download["url"], conf.download["dst"], logger.sub()) 
    380452 
     
    386458        if options.change: 
    387459            init_osmosis_change(conf) 
     460        elif options.diff: 
     461            init_osmosis_diff(conf) 
    388462 
    389463    ########################################################################## 
     
    476550        clean_database(conf, options.no_clean or not conf.clean_at_end) 
    477551 
     552    if options.diff: 
     553        # don't erase any file 
     554        return 
     555 
    478556    # remove files 
    479557    if "url" in conf.download and "dst" in conf.download and not options.no_clean: 
     
    596674 
    597675        country_conf.init() 
    598          
     676        options.diff = not options.change and "diff" in country_conf.download 
     677 
    599678        # analyse 
    600679        run(country_conf, logger, options) 
Note: See TracChangeset for help on using the changeset viewer.