コード例 #1
0
def gf_transfer(event_dir,
                version=1,
                pdl_config=None,
                dry_run=False,
                status='UPDATE'):
    """
    Transfer ground failure results to dev server.

    Args:
        event_dir (str): Path to event directory.
        version (int): Version number of ground-failure run.
        pdl_config (str): Path to PDL config file.
        dry_run (bool): True suppresss transfer but data is assesmbled for
            the transfer.
        status (str): Status of ground-failure product being sent to comcat.
            Default is "UPDATE" but can also be "WARNING" so that the product
            page displays the warning banner.

    Returns:
    tuple:
        - Success: bool for whether transfer was successful.
        - feed: link to json feed for product.
    """

    print('Preparing directory to transfer %s...' % event_dir)
    pdl.prepare_pdl_directory(event_dir)

    if pdl_config is None:
        print('PDL directory prepared, no pdl_config '
              'provided so no files were sent')
        return (True, None, None)
    else:
        # Transfer
        if not dry_run:
            print('Transferring...')
        else:
            print('Constructing PDL command...')

        log = pdl.transfer(event_dir,
                           version,
                           pdl_config,
                           dryrun=dry_run,
                           status=status)

        if log['rc'] is True and dry_run is False:
            print('Successful PDL transfer.')
            success = True
        elif log['rc'] is True and dry_run is True:
            print("Dry run complete, no transfer attempted.")
            success = True
        else:
            print('PDL transfer failed.')
            print(log['so'].decode())
            success = False

        return success
コード例 #2
0
ファイル: gfail_test.py プロジェクト: lmateus/groundfailure
def test_zhu2015_web(tmpdir):
    shakegrid = os.path.join(datadir, 'loma_prieta', 'grid.xml')
    pathcmd = """
        gfail --set-default-paths \
        -d %s/loma_prieta/model_inputs \
        -o [TMPOUT] \
        -c %s/defaultconfigfiles/models \
        -m %s/defaultconfigfiles/mapconfig.ini \
        -md %s/loma_prieta/mapping_inputs
    """ % (datadir, upone, upone, datadir)

    # Make a copy of current defaults
    default_file = os.path.join(os.path.expanduser("~"), ".gfail_defaults")
    if os.path.exists(default_file):
        shutil.copy(default_file, default_file + '_bak')

    try:
        try:
            p = os.path.join(str(tmpdir.name), "sub")
        except:
            p = os.path.join(str(tmpdir), "sub")
        if not os.path.exists(p):
            os.makedirs(p)
        else:
            shutil.rmtree(p)
            os.makedirs(p)

        # Clear paths
        rc, so, se = get_command_output('gfail -reset')
        np.testing.assert_equal(True, rc, 'gfail reset failed')

        # Modify paths
        pathcmd = pathcmd.replace('[TMPOUT]', p)
        rc, so, se = get_command_output(pathcmd)
        np.testing.assert_equal(True, rc, 'gfail path modification failed')

        with open(default_file, "a") as f:
            f.write("popfile = %s" %
                    os.path.join(datadir, 'loma_prieta/lspop2016_lp.flt'))

        # Run model
        conf = os.path.join(datadir, 'test_conf')
        runcmd = "gfail %s %s -w --hdf5 -ext" % (conf, shakegrid)
        rc, so, se = get_command_output(runcmd)
        np.testing.assert_equal(True, rc, se.decode())

        # event_dir = os.path.join(p, '19891018000415')

        # # Make png
        # cmd = 'create_png -e %s' % event_dir
        # rc1, so1, se1 = get_command_output(cmd)
        # np.testing.assert_equal(True, rc1, se1.decode())

        # # Make info
        # cmd = 'create_info -e %s' % event_dir
        # rc2, so2, se2 = get_command_output(cmd)
        # np.testing.assert_equal(True, rc2, se2.decode())

        # Make PDL directory
        # pdldir = os.path.join(p, '19891018000415')
        pdldir = p
        pdl.prepare_pdl_directory(pdldir)

        # Transfer dry run
        pdl_out = pdl.transfer(pdldir, 1, 'None', dryrun=True)
    except Exception as e:  # So that defaults are put back even if something goes wrong
        print(e)

    # Put defaults back
    if os.path.exists(default_file + '_bak'):
        shutil.copy(default_file + '_bak', default_file)

    # remove backup
    os.remove(default_file + '_bak')

    # Then do test
    assert pdl_out['rc'] is True

    # Remove tempfile
    shutil.rmtree(p)