IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 38451


Ignore:
Timestamp:
Jun 12, 2015, 10:02:47 PM (11 years ago)
Author:
eugene
Message:

merge changes from trunk

Location:
branches/eam_branches/ipp-20150419
Files:
10 edited
1 copied

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ipp-20150419

  • branches/eam_branches/ipp-20150419/dbconfig/pstamp.md

    r35295 r38451  
    6969END
    7070
    71 pstampWebRequest METADATA
     71pstampWebRequest        METADATA
    7272    num         S64         0    # Primary Key AUTO_INCREMENT
    7373END
    7474
    75 pstampFile METADATA
     75pstampFile              METADATA
    7676    file_id     S64         0   # Primary Key AUTO_INCREMENT
    7777    job_id      S64         0
    7878    path        STR         255
    79 end
     79END
     80
     81pstampUserDomain        METADATA
     82    domainName      STR     64
     83    accessLevel     S32     0
     84    defaultProduct  STR     255
     85    defaultLabel    STR     64
     86END
     87
     88pstampUser              METADATA
     89    userName        STR     64  # Primary Key (userName, domainName)
     90    domainName      STR     64 
     91    accessLevel     S32     0
     92    defaultProduct  STR     255
     93    defaultLabel    STR     64
     94END
     95
     96pstampAccessLevel       METADATA
     97    proj_id         S64     0   # Primary Key (proj_id, accessLevel) fkey(proj_id)
     98    accessLevel     S32     0
     99    mjd_min         F32     0
     100    mjd_max         F32     0
     101END
     102
  • branches/eam_branches/ipp-20150419/ippScripts/scripts/lap_queue_diff.pl

    r38096 r38451  
    2525my ( $help, $verbose, $debug, $do_nothing);
    2626my ( $camera, $dbname);
    27 my ( $lap_id );
     27my ( $lap_id, $data_group );
    2828my ( $queue_list );
    2929
     
    3838   
    3939    'lap_id=s'     => \$lap_id,
     40    'data_group=s' => \$data_group,
    4041    'queue_list=s' => \$queue_list,
    4142    ) or pod2usage ( 2 );
    4243pod2usage( -msg => "Unknown option: @ARGV", -exitval => 2 ) if @ARGV;
    4344pod2usage(
    44     -msg => "--lap_id is required",
     45    -msg => "--lap_id --data_group --queue_list are required",
    4546    -exitval => 3,
    4647    ) unless
    47     defined $lap_id;
     48    defined $lap_id and
     49    defined $queue_list and
     50    defined $data_group
     51;
    4852
    4953unless (defined $dbname) {
     
    9195            if ($can_diff == 1) {
    9296                # This needs a check to ensure it hasn't been done yet.
    93                 my $diff_id = &launch_diff($warp_id);
     97                my $diff_id = &launch_diff($warp_id,$label,$data_group);
    9498                print "Made diff for $warp_id => $diff_id\n";
    9599                $Ndiff++;
     
    255259    my $warp_id = shift;
    256260    my $label = shift;
     261    my $data_group = shift;
     262    my $command = "$difftool -definewarpstack -available -bothways -good_frac 0.2 ";
     263    $command   .= " -warp_label $label -stack_label $label -set_label $label ";
     264    $command   .= " -set_data_group $data_group ";
     265    $command   .= " -set_workdir neb://\@HOST\@.0/gpc1/${label}/${data_group}/ ";
     266    $command   .= " -set_reduction WARPSTACK_PV3 ";
     267    $command   .= " -warp_id ${warp_id} ";
     268    $command .= " -dbname $dbname " if defined $dbname;
     269   
    257270    if (($debug)||($do_nothing)) {
     271        print "DEBUG! WOULD RUN: >> $command\n";
    258272        return(99);
    259273    }
    260274    else {
    261         my $command = "$difftool -definewarpstack -available -bothways -good_frac 0.2 ";
    262         $command   .= " -warp_label $label -stack_label $label -set_label $label ";
    263         $command   .= " -set_data_group ${label}.";
    264         $command   .= " -set_workdir neb://@HOST@.0/gpc1/LAP.PV3.20140730/diff01.20150311/ ";
    265         $command   .= " -set_reduction WARPSTACK_PV3 ";
    266         $command   .= " -warp_id ${warp_id} ";
    267         $command .= " -dbname $dbname " if defined $dbname;
    268275        my ($success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) =
    269276            run(command => $command, verbose => $verbose);
  • branches/eam_branches/ipp-20150419/ippTools/share/Makefile.am

    r38134 r38451  
    359359        pstamptool_stopdependentjob.sql \
    360360        pstamptool_updatejob.sql \
     361        pstamptool_addaccesslevel.sql \
    361362        pxadmin_create_tables.sql \
    362363        pxadmin_create_mirror_tables.sql \
  • branches/eam_branches/ipp-20150419/ippTools/share/pxadmin_create_tables.sql

    r37885 r38451  
    15111511) ENGINE=innodb DEFAULT CHARSET=latin1;
    15121512
     1513CREATE TABLE pstampUserDomain (
     1514    domainName      VARCHAR(64),
     1515    accessLevel     INT,
     1516    defaultProduct  VARCHAR(255),
     1517    defaultLabel    VARCHAR(64),
     1518    PRIMARY KEY(domainName)
     1519) ENGINE=innodb DEFAULT CHARSET=latin1;
     1520
     1521CREATE TABLE pstampUser (
     1522    userName        VARCHAR(64),
     1523    domainName      VARCHAR(64),
     1524    accessLevel     INT,
     1525    defaultProduct  VARCHAR(255),
     1526    defaultLabel    VARCHAR(64),
     1527    PRIMARY KEY (userName, domainName)
     1528) ENGINE=innodb DEFAULT CHARSET=latin1;
     1529
     1530CREATE TABLE pstampAccessLevel (
     1531    proj_id         BIGINT,
     1532    accessLevel     INT,
     1533    mjd_min         FLOAT DEFAULT 0,
     1534    mjd_max         FLOAT DEFAULT 0,
     1535    PRIMARY KEY (proj_id, accessLevel),
     1536    UNIQUE KEY (proj_id, accessLevel),
     1537    FOREIGN KEY(proj_id) REFERENCES pstampProject(proj_id)
     1538) ENGINE=innodb DEFAULT CHARSET=latin1;
     1539
    15131540CREATE TABLE pstampWebRequest (
    15141541        num BIGINT AUTO_INCREMENT,
  • branches/eam_branches/ipp-20150419/ippTools/share/pxadmin_drop_tables.sql

    r37885 r38451  
    6969DROP TABLE IF EXISTS pstampProject;
    7070DROP TABLE IF EXISTS pstampRequest;
     71DROP TABLE IF EXISTS pstampDependent;
     72DROP TABLE IF EXISTS pstampWebRequest;
     73DROP TABLE IF EXISTS pstampFile;
    7174DROP TABLE IF EXISTS pstampJob;
     75DROP TABLE IF EXISTS pstampUserDomain;
     76DROP TABLE IF EXISTS pstampUser;
     77DROP TABLE IF EXISTS pstampAccessLevel;
    7278DROP TABLE IF EXISTS distRun;
    7379DROP TABLE IF EXISTS distTarget;
     
    8591DROP TABLE IF EXISTS publishRun;
    8692DROP TABLE IF EXISTS publishDone;
    87 DROP TABLE IF EXISTS pstampDependent;
    88 DROP TABLE IF EXISTS pstampFile;
    8993DROP TABLE IF EXISTS staticskyInput;
    9094DROP TABLE IF EXISTS staticskyResult;
    9195DROP TABLE IF EXISTS staticskyRun;
    9296DROP TABLE IF EXISTS Label;
    93 DROP TABLE IF EXISTS pstampWebRequest;
    9497DROP TABLE IF EXISTS chipBackgroundRun;
    9598DROP TABLE IF EXISTS chipBackgroundImfile;
  • branches/eam_branches/ipp-20150419/ippTools/src/pstamptool.c

    r38134 r38451  
    6161static bool deletefileMode(pxConfig *config);
    6262
     63static bool adddomainMode(pxConfig * config);
     64static bool updatedomainMode(pxConfig * config);
    6365static bool listdomainMode(pxConfig *config);
     66static bool adduserMode(pxConfig * config);
     67static bool updateuserMode(pxConfig * config);
    6468static bool listuserMode(pxConfig * config);
     69static bool addaccesslevelMode(pxConfig * config);
     70static bool updateaccesslevelMode(pxConfig * config);
     71static bool listaccesslevelMode(pxConfig * config);
    6572
    6673# define MODECASE(caseName, func) \
     
    114121        MODECASE(PSTAMPTOOL_MODE_DELETEFILE, deletefileMode);
    115122
     123        MODECASE(PSTAMPTOOL_MODE_ADDDOMAIN, adddomainMode);
     124        MODECASE(PSTAMPTOOL_MODE_UPDATEDOMAIN, updatedomainMode);
    116125        MODECASE(PSTAMPTOOL_MODE_LISTDOMAIN, listdomainMode);
     126        MODECASE(PSTAMPTOOL_MODE_ADDUSER, adduserMode);
     127        MODECASE(PSTAMPTOOL_MODE_UPDATEUSER, updateuserMode);
    117128        MODECASE(PSTAMPTOOL_MODE_LISTUSER, listuserMode);
     129        MODECASE(PSTAMPTOOL_MODE_ADDACCESSLEVEL, addaccesslevelMode);
     130        MODECASE(PSTAMPTOOL_MODE_UPDATEACCESSLEVEL, updateaccesslevelMode);
     131        MODECASE(PSTAMPTOOL_MODE_LISTACCESSLEVEL, listaccesslevelMode);
    118132
    119133        default:
     
    17091723}
    17101724
     1725static bool adddomainMode(pxConfig *config)
     1726{
     1727    PS_ASSERT_PTR_NON_NULL(config, false);
     1728
     1729    PXOPT_LOOKUP_STR(domainName,      config->args, "-set_domain",  true, false);
     1730    PXOPT_LOOKUP_S32(accessLevel,     config->args, "-set_accessLevel", true, false);
     1731    PXOPT_LOOKUP_STR(defaultProduct,  config->args, "-set_defaultProduct",  false, false);
     1732    PXOPT_LOOKUP_STR(defaultLabel,    config->args, "-set_defaultLabel",  false, false);
     1733
     1734    if (!pstampUserDomainInsert(config->dbh,
     1735        domainName,
     1736        accessLevel,
     1737        defaultProduct,
     1738        defaultLabel
     1739        )) {
     1740        psError(PS_ERR_UNKNOWN, false, "failed to insert domain");
     1741        return false;
     1742    }
     1743
     1744    return true;
     1745}
     1746static bool updatedomainMode(pxConfig *config)
     1747{
     1748    PS_ASSERT_PTR_NON_NULL(config, false);
     1749
     1750    PXOPT_LOOKUP_STR(domainName,      config->args, "-domain",  true, false);
     1751    PXOPT_LOOKUP_S32(accessLevel,     config->args, "-set_accessLevel", false, false);
     1752    PXOPT_LOOKUP_STR(defaultProduct,  config->args, "-set_defaultProduct",  false, false);
     1753    PXOPT_LOOKUP_STR(defaultLabel,    config->args, "-set_defaultLabel",  false, false);
     1754
     1755    if (!accessLevel && !defaultProduct && !defaultLabel) {
     1756        psError(PS_ERR_UNKNOWN, true, "at least one set option is required");
     1757        return false;
     1758    }
     1759
     1760    psMetadata *where = psMetadataAlloc();
     1761    PXOPT_COPY_STR(config->args, where, "-domain",   "domainName", "==");
     1762    if (!psListLength(where->list)) {
     1763        psFree(where);
     1764        psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required");
     1765        return false;
     1766    }
     1767
     1768    psString query = psStringCopy("UPDATE pstampUserDomain SET");
     1769
     1770    char * sep = "";
     1771    if (accessLevel) {
     1772        psStringAppend(&query, "%s accessLevel = '%d'", sep, accessLevel);
     1773        sep = ", ";
     1774    }
     1775    if (defaultProduct) {
     1776        psStringAppend(&query, "%s  defaultProduct = '%s'", sep, defaultProduct);
     1777        sep = ", ";
     1778    }
     1779    if (defaultLabel) {
     1780        psStringAppend(&query, "%s defaultLabel = '%s'", sep, defaultLabel);
     1781        sep = ", ";
     1782    }
     1783
     1784    psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     1785    psStringAppend(&query, "\nWHERE %s", whereClause);
     1786    psFree(whereClause);
     1787    psFree(where);
     1788
     1789    if (!p_psDBRunQuery(config->dbh, query)) {
     1790        psError(PS_ERR_UNKNOWN, false, "database error");
     1791        psFree(query);
     1792        return false;
     1793    }
     1794
     1795    // psU64 affected = psDBAffectedRows(config->dbh);
     1796    // psLogMsg("pstamptool", PS_LOG_INFO, "Updated %" PRIu64 " pstampRequests", affected);
     1797
     1798    return true;
     1799}
     1800
    17111801static bool listdomainMode(pxConfig *config)
    17121802{
     
    17151805    psMetadata *where = psMetadataAlloc();
    17161806    PXOPT_COPY_STR(config->args, where, "-domain", "domainName", "=");
    1717     PXOPT_COPY_S32(config->args, where, "-access_level", "accessLevel", "=");
     1807    PXOPT_COPY_S32(config->args, where, "-accessLevel", "accessLevel", "=");
    17181808
    17191809    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     
    17641854    return true;
    17651855}
     1856static bool adduserMode(pxConfig *config)
     1857{
     1858    PS_ASSERT_PTR_NON_NULL(config, false);
     1859
     1860    PXOPT_LOOKUP_STR(userName,        config->args, "-set_user",  true, false);
     1861    PXOPT_LOOKUP_STR(domainName,      config->args, "-set_domain",  true, false);
     1862    PXOPT_LOOKUP_S32(accessLevel,     config->args, "-set_accessLevel", false, false);
     1863    PXOPT_LOOKUP_STR(defaultProduct,  config->args, "-set_defaultProduct",  false, false);
     1864    PXOPT_LOOKUP_STR(defaultLabel,    config->args, "-set_defaultLabel",  false, false);
     1865
     1866    if (!pstampUserInsert(config->dbh,
     1867        userName,
     1868        domainName,
     1869        accessLevel,
     1870        defaultProduct,
     1871        defaultLabel
     1872        )) {
     1873        psError(PS_ERR_UNKNOWN, false, "failed to insert user");
     1874        return false;
     1875    }
     1876
     1877    return true;
     1878}
     1879static bool updateuserMode(pxConfig *config)
     1880{
     1881    PS_ASSERT_PTR_NON_NULL(config, false);
     1882
     1883    PXOPT_LOOKUP_STR(userName,        config->args, "-user",  true, false);
     1884    PXOPT_LOOKUP_STR(domainName,      config->args, "-domain",  true, false);
     1885    PXOPT_LOOKUP_S32(accessLevel,     config->args, "-set_accessLevel", false, false);
     1886    PXOPT_LOOKUP_STR(defaultProduct,  config->args, "-set_defaultProduct",  false, false);
     1887    PXOPT_LOOKUP_STR(defaultLabel,    config->args, "-set_defaultLabel",  false, false);
     1888
     1889    if (!accessLevel && !defaultProduct && !defaultLabel) {
     1890        psError(PS_ERR_UNKNOWN, true, "at least one set option is required");
     1891        return false;
     1892    }
     1893
     1894    psMetadata *where = psMetadataAlloc();
     1895    PXOPT_COPY_STR(config->args, where, "-user",     "userName", "==");
     1896    PXOPT_COPY_STR(config->args, where, "-domain",   "domainName", "==");
     1897    if (!psListLength(where->list)) {
     1898        psFree(where);
     1899        psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required");
     1900        return false;
     1901    }
     1902
     1903    psString query = psStringCopy("UPDATE pstampUser SET");
     1904
     1905    char * sep = "";
     1906    if (accessLevel) {
     1907        psStringAppend(&query, "%s accessLevel = '%d'", sep, accessLevel);
     1908        sep = ", ";
     1909    }
     1910    if (defaultProduct) {
     1911        psStringAppend(&query, "%s  defaultProduct = '%s'", sep, defaultProduct);
     1912        sep = ", ";
     1913    }
     1914    if (defaultLabel) {
     1915        psStringAppend(&query, "%s defaultLabel = '%s'", sep, defaultLabel);
     1916        sep = ", ";
     1917    }
     1918
     1919    psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     1920    psStringAppend(&query, "\nWHERE %s", whereClause);
     1921    psFree(whereClause);
     1922    psFree(where);
     1923
     1924    if (!p_psDBRunQuery(config->dbh, query)) {
     1925        psError(PS_ERR_UNKNOWN, false, "database error");
     1926        psFree(query);
     1927        return false;
     1928    }
     1929
     1930    // psU64 affected = psDBAffectedRows(config->dbh);
     1931    // psLogMsg("pstamptool", PS_LOG_INFO, "Updated %" PRIu64 " pstampRequests", affected);
     1932
     1933    return true;
     1934}
    17661935static bool listuserMode(pxConfig *config)
    17671936{
     
    17711940    PXOPT_COPY_STR(config->args, where, "-user", "userName", "=");
    17721941    PXOPT_COPY_STR(config->args, where, "-domain", "domainName", "=");
    1773     PXOPT_COPY_S32(config->args, where, "-access_level", "pstampUser.accessLevel", "=");
     1942    PXOPT_COPY_S32(config->args, where, "-accessLevel", "pstampUser.accessLevel", "=");
    17741943    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
    17751944    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
     
    18221991    return true;
    18231992}
     1993
     1994static bool addaccesslevelMode(pxConfig *config)
     1995{
     1996    PS_ASSERT_PTR_NON_NULL(config, false);
     1997
     1998    PXOPT_LOOKUP_S64(proj_id,         config->args, "-set_proj_id", false, false);
     1999    PXOPT_LOOKUP_STR(project_name,    config->args, "-set_project_name",  false, false);
     2000    PXOPT_LOOKUP_S32(accessLevel,     config->args, "-set_accessLevel", true, false);
     2001    PXOPT_LOOKUP_F32(mjd_min,         config->args, "-set_mjd_min", false, false);
     2002    PXOPT_LOOKUP_F32(mjd_max,         config->args, "-set_mjd_max", false, false);
     2003
     2004    if (proj_id) {
     2005        if (!pstampAccessLevelInsert(config->dbh,
     2006            proj_id,
     2007            accessLevel,
     2008            mjd_min,
     2009            mjd_max
     2010        )) {
     2011            psError(PS_ERR_UNKNOWN, false, "failed to insert accessLevel");
     2012            return false;
     2013        }
     2014    } else if (project_name) {
     2015        // use select insert getting proj_id from pstampProject
     2016        psString query = pxDataGet("pstamptool_addaccesslevel.sql");
     2017        if (!p_psDBRunQueryF(config->dbh, query, accessLevel, mjd_min, mjd_max, project_name)) {
     2018            psError(PS_ERR_UNKNOWN, false, "database error");
     2019            psFree(query);
     2020            return false;
     2021        }
     2022        psFree(query);
     2023    } else {
     2024        psError(PS_ERR_UNKNOWN, true, "proj_id or project_name is required");
     2025        return false;
     2026    }
     2027
     2028    return true;
     2029}
     2030static bool updateaccesslevelMode(pxConfig *config)
     2031{
     2032    return false;
     2033}
     2034static bool listaccesslevelMode(pxConfig *config)
     2035{
     2036    PS_ASSERT_PTR_NON_NULL(config, false);
     2037
     2038    psMetadata *where = psMetadataAlloc();
     2039    PXOPT_COPY_STR(config->args, where, "-project_name", "pstampProject.name", "=");
     2040    PXOPT_COPY_S64(config->args, where, "-proj_id", "proj_id", "=");
     2041    PXOPT_COPY_S32(config->args, where, "-accessLevel", "accessLevel", "=");
     2042
     2043    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     2044    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
     2045
     2046    psString query = psStringCopy("SELECT * from pstampAccessLevel join pstampProject USING(proj_id)");
     2047
     2048    if (psListLength(where->list)) {
     2049        psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     2050        psStringAppend(&query, " WHERE %s", whereClause);
     2051        psFree(whereClause);
     2052    }
     2053    psFree(where);
     2054
     2055    // treat limit == 0 as "no limit"
     2056    if (limit) {
     2057        psString limitString = psDBGenerateLimitSQL(limit);
     2058        psStringAppend(&query, " %s", limitString);
     2059        psFree(limitString);
     2060    }
     2061
     2062    if (!p_psDBRunQuery(config->dbh, query)) {
     2063        psError(PS_ERR_UNKNOWN, false, "database error");
     2064        psFree(query);
     2065        return false;
     2066    }
     2067    psFree(query);
     2068
     2069    psArray *output = p_psDBFetchResult(config->dbh);
     2070    if (!output) {
     2071        psError(PS_ERR_UNKNOWN, false, "database error");
     2072        return false;
     2073    }
     2074    if (!psArrayLength(output)) {
     2075        psFree(output);
     2076        return true;
     2077    }
     2078
     2079    // negative simple so the default is true
     2080    if (!ippdbPrintMetadatas(stdout, output, "pstampAccessLevel", !simple)) {
     2081        psError(PS_ERR_UNKNOWN, false, "failed to print array");
     2082        psFree(output);
     2083        return false;
     2084    }
     2085
     2086    psFree(output);
     2087
     2088    return true;
     2089}
    18242090# endif
  • branches/eam_branches/ipp-20150419/ippTools/src/pstamptool.h

    r38134 r38451  
    6565    PSTAMPTOOL_MODE_ADDACCESSLEVEL,
    6666    PSTAMPTOOL_MODE_UPDATEACCESSLEVEL,
    67     PSTAMPTOOL_MODE_LISTACCCESSLEVEL,
     67    PSTAMPTOOL_MODE_LISTACCESSLEVEL,
    6868} pstamptoolMode;
    6969
  • branches/eam_branches/ipp-20150419/ippTools/src/pstamptoolConfig.c

    r38134 r38451  
    277277    // -project
    278278    psMetadata *projectArgs = psMetadataAlloc();
    279     psMetadataAddStr(projectArgs, PS_LIST_TAIL, "-name", 0, "define project name to list (required)", NULL);
     279    psMetadataAddStr(projectArgs, PS_LIST_TAIL, "-name", 0, "define project name to list", NULL);
    280280    psMetadataAddBool(projectArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false);
    281281
     
    303303    psMetadataAddS64(deletefileArgs, PS_LIST_TAIL, "-job_id",      0, "select by job ID (required)", 0);
    304304
    305     // -adduserdomain
    306     psMetadata *adduserdomainArgs = psMetadataAlloc();
    307     psMetadataAddStr(adduserdomainArgs, PS_LIST_TAIL, "-domain",   0, "define domain name (required)", NULL);
    308     psMetadataAddS32(adduserdomainArgs, PS_LIST_TAIL, "-access_level", 0, "define default access level for users in this domain (required)", 0);
    309     psMetadataAddStr(adduserdomainArgs, PS_LIST_TAIL, "-default_product",      0, "define default data store product for users in this domain", NULL);
    310     psMetadataAddStr(adduserdomainArgs, PS_LIST_TAIL, "-default_label",      0, "define default label for requests from users in this domain", NULL);
     305    // Access control tables
     306
     307    // -adddomain
     308    psMetadata *adddomainArgs = psMetadataAlloc();
     309    psMetadataAddStr(adddomainArgs, PS_LIST_TAIL, "-set_domain",   0, "define domain name (required)", NULL);
     310    psMetadataAddS32(adddomainArgs, PS_LIST_TAIL, "-set_accessLevel", 0, "define access level for this domain (required)", 0);
     311    psMetadataAddStr(adddomainArgs, PS_LIST_TAIL, "-set_defaultProduct",   0, "define default product", NULL);
     312    psMetadataAddStr(adddomainArgs, PS_LIST_TAIL, "-set_defaultLabel",   0, "define default Label", NULL);
     313
     314    // -updatedomain
     315    psMetadata *updatedomainArgs = psMetadataAlloc();
     316    psMetadataAddStr(updatedomainArgs, PS_LIST_TAIL, "-domain",   0, "define domain name (required)", NULL);
     317    psMetadataAddS32(updatedomainArgs, PS_LIST_TAIL, "-set_accessLevel", 0, "define access level for this domain", 0);
     318    psMetadataAddStr(updatedomainArgs, PS_LIST_TAIL, "-set_defaultProduct",   0, "define default product", NULL);
     319    psMetadataAddStr(updatedomainArgs, PS_LIST_TAIL, "-set_defaultLabel",   0, "define default Label", NULL);
    311320
    312321    // -listdomain
    313322    psMetadata *listdomainArgs = psMetadataAlloc();
    314323    psMetadataAddStr(listdomainArgs, PS_LIST_TAIL, "-domain",   0, "define domain name", NULL);
    315     psMetadataAddS32(listdomainArgs, PS_LIST_TAIL, "-access_level", 0, "select by  access level", 0);
     324    psMetadataAddS32(listdomainArgs, PS_LIST_TAIL, "-accessLevel", 0, "select by  access level", 0);
    316325    psMetadataAddU64(listdomainArgs, PS_LIST_TAIL, "-limit",       0, "limit result set to N items", 0);
    317326    psMetadataAddBool(listdomainArgs, PS_LIST_TAIL, "-simple",     0, "use the simple output format", false);
     
    319328    // -adduser
    320329    psMetadata *adduserArgs = psMetadataAlloc();
    321     psMetadataAddStr(adduserArgs, PS_LIST_TAIL, "-user",   0, "define user name (required)", NULL);
    322     psMetadataAddStr(adduserArgs, PS_LIST_TAIL, "-domain",   0, "define user's domain name (required)", NULL);
    323     psMetadataAddS32(adduserArgs, PS_LIST_TAIL, "-access_level", 0, "define maximum access level for this user (required)", 0);
    324     psMetadataAddStr(adduserArgs, PS_LIST_TAIL, "-default_product",      0, "define default data store product for this user", NULL);
    325     psMetadataAddStr(adduserArgs, PS_LIST_TAIL, "-default_label",      0, "define default label for requests from this user", NULL);
     330    psMetadataAddStr(adduserArgs, PS_LIST_TAIL, "-set_user",   0, "define user name (required)", NULL);
     331    psMetadataAddStr(adduserArgs, PS_LIST_TAIL, "-set_domain",   0, "define user's domain name (required)", NULL);
     332    psMetadataAddS32(adduserArgs, PS_LIST_TAIL, "-set_accessLevel", 0, "define maximum access level for this user", 0);
     333    psMetadataAddStr(adduserArgs, PS_LIST_TAIL, "-set_defaultProduct",      0, "define default data store product for this user", NULL);
     334    psMetadataAddStr(adduserArgs, PS_LIST_TAIL, "-set_defaultLabel",      0, "define default label for requests from this user", NULL);
     335
     336    // -updateuser
     337    psMetadata *updateuserArgs = psMetadataAlloc();
     338    psMetadataAddStr(updateuserArgs, PS_LIST_TAIL, "-user",   0, "select user to update (required)", NULL);
     339    psMetadataAddStr(updateuserArgs, PS_LIST_TAIL, "-domain",   0, "select domain of user to update (required)", NULL);
     340    psMetadataAddS32(updateuserArgs, PS_LIST_TAIL, "-set_accessLevel", 0, "define access level for this domain", 0);
     341    psMetadataAddStr(updateuserArgs, PS_LIST_TAIL, "-set_defaultProduct",   0, "define default product", NULL);
     342    psMetadataAddStr(updateuserArgs, PS_LIST_TAIL, "-set_defaultLabel",   0, "define default Label", NULL);
    326343
    327344    // -listuser
     
    329346    psMetadataAddStr(listuserArgs, PS_LIST_TAIL, "-user",   0, "select by user name", NULL);
    330347    psMetadataAddStr(listuserArgs, PS_LIST_TAIL, "-domain",   0, "select by user's domain name", NULL);
    331     psMetadataAddS32(listuserArgs, PS_LIST_TAIL, "-access_level", 0, "select by maximum access level", 0);
     348    psMetadataAddS32(listuserArgs, PS_LIST_TAIL, "-accessLevel", 0, "select by maximum access level", 0);
    332349    psMetadataAddU64(listuserArgs, PS_LIST_TAIL, "-limit",       0, "limit result set to N items", 0);
    333350    psMetadataAddBool(listuserArgs, PS_LIST_TAIL, "-simple",     0, "use the simple output format", false);
     351
     352    // -addaccesslevel
     353    psMetadata *addaccesslevelArgs = psMetadataAlloc();
     354    psMetadataAddStr(addaccesslevelArgs, PS_LIST_TAIL, "-set_project_name",   0, "define project name", NULL);
     355    psMetadataAddS64(addaccesslevelArgs, PS_LIST_TAIL, "-set_proj_id", 0, "define project ID", 0);
     356    psMetadataAddS32(addaccesslevelArgs, PS_LIST_TAIL, "-set_accessLevel", 0, "define access level (required)", 0);
     357    psMetadataAddF32(addaccesslevelArgs, PS_LIST_TAIL, "-set_mjd_min", 0, "define mjd_min", 0.0);
     358    psMetadataAddF32(addaccesslevelArgs, PS_LIST_TAIL, "-set_mjd_max", 0, "define mjd_max", 0.0);
     359
     360    // -listaccesslevel
     361    psMetadata *listaccesslevelArgs = psMetadataAlloc();
     362    psMetadataAddStr(listaccesslevelArgs, PS_LIST_TAIL, "-project_name",   0, "search by project name", NULL);
     363    psMetadataAddS64(listaccesslevelArgs, PS_LIST_TAIL, "-proj_id", 0, "select by  project ID", 0);
     364    psMetadataAddS32(listaccesslevelArgs, PS_LIST_TAIL, "-accessLevel", 0, "select by  access level", 0);
     365    psMetadataAddU64(listaccesslevelArgs, PS_LIST_TAIL, "-limit",       0, "limit result set to N items", 0);
     366    psMetadataAddBool(listaccesslevelArgs, PS_LIST_TAIL, "-simple",     0, "use the simple output format", false);
     367
     368    // -updateaccesslevel
     369    psMetadata *updateaccesslevelArgs = psMetadataAlloc();
     370    psMetadataAddStr(updateaccesslevelArgs, PS_LIST_TAIL, "-project_name",   0, "select by project name", NULL);
     371    psMetadataAddS64(updateaccesslevelArgs, PS_LIST_TAIL, "-proj_id", 0, "select by project ID", 0);
     372    psMetadataAddS32(updateaccesslevelArgs, PS_LIST_TAIL, "-accessLevel", 0, "select by access level (required)", 0);
     373    psMetadataAddF32(updateaccesslevelArgs, PS_LIST_TAIL, "-set_mjd_min", 0, "define new mjd_min", NAN);
     374    psMetadataAddF32(updateaccesslevelArgs, PS_LIST_TAIL, "-set_mjd_max", 0, "define new mjd_max", NAN);
    334375
    335376    PXOPT_ADD_MODE("-addreq",          "", PSTAMPTOOL_MODE_ADDREQ,       addreqArgs);
     
    365406    PXOPT_ADD_MODE("-deletefile",      "", PSTAMPTOOL_MODE_DELETEFILE,   deletefileArgs);
    366407
     408    PXOPT_ADD_MODE("-adddomain",       "", PSTAMPTOOL_MODE_ADDDOMAIN, adddomainArgs);
     409    PXOPT_ADD_MODE("-updatedomain",    "", PSTAMPTOOL_MODE_UPDATEDOMAIN, updatedomainArgs);
    367410    PXOPT_ADD_MODE("-listdomain",      "", PSTAMPTOOL_MODE_LISTDOMAIN, listdomainArgs);
     411    PXOPT_ADD_MODE("-adduser",         "", PSTAMPTOOL_MODE_ADDUSER, adduserArgs);
     412    PXOPT_ADD_MODE("-updateuser",      "", PSTAMPTOOL_MODE_UPDATEUSER, updateuserArgs);
    368413    PXOPT_ADD_MODE("-listuser",        "", PSTAMPTOOL_MODE_LISTUSER, listuserArgs);
     414    PXOPT_ADD_MODE("-addaccesslevel",  "", PSTAMPTOOL_MODE_ADDACCESSLEVEL, addaccesslevelArgs);
     415    PXOPT_ADD_MODE("-listaccesslevel", "", PSTAMPTOOL_MODE_LISTACCESSLEVEL, listaccesslevelArgs);
    369416
    370417    if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) {
  • branches/eam_branches/ipp-20150419/pstamp/scripts/pstampparse.pl

    r38133 r38451  
    3333my $dest_requires_magic;
    3434my $dump_params = 0;
     35my $new_email;
     36
     37my %accessLevelCache;
    3538
    3639# set this to true to disable update processing
     
    4346    'product=s' =>  \$product,
    4447    'label=s'   =>  \$label,
     48    'new_email=s' => \$new_email,
    4549    'mode=s'    =>  \$mode,
    4650    'need_magic'=>  \$dest_requires_magic,
     
    142146    print STDERR "Note that EMAIL will not be optional\n";
    143147
     148    # if need be we can hack Peter Veres' email in here if label = 'WEB.UP' and req_name like 'Peter_Veres%'
     149
    144150} elsif (!$email) {
    145151    my_die("ERROR: Required parameter EMAIL not found in request file header.\n", $PSTAMP_INVALID_REQUEST)
    146152}
     153
     154
    147155   
    148156
     
    158166    my_die("email not supplied in version $extver request file $request_file_name\n", $PSTAMP_INVALID_REQUEST)
    159167        unless $email;
    160 
    161     # XXX check for "valid" $email
    162168} else {
    163169    # for version 1 file the action is process and email is not used
     
    167173
    168174print "Request Header Keywords EXTVER: $extver REQ_NAME: $req_name ACTION: $action EMAIL: $email\n";
     175
     176if ($new_email) {
     177    # this is primarily for ease in testing
     178    print "Setting email to command line provided value $new_email\n";
     179    $email = $new_email
     180}
    169181
    170182# check for duplicate request name
     
    239251
    240252# if the request came through the upload channel, change it to the user's specific label
    241 # if any is known.
     253# if any is known. Do we want to do this for any other channels?
    242254if ($label and $label eq 'WEB.UP') {
    243255    if ($labelForUser) {
     
    749761
    750762            if ($mjd > $mjd_max) {
    751                 print STDERR "User is not authorized for stamps from this exposure.\n";
     763                print "User is not authorized for stamps from this exposure exp_id $exp_id.\n";
     764                print STDERR "User is not authorized for stamps from this exposure exp_id $exp_id.\n";
    752765                insertFakeJobForRow($row, $job_num, $PSTAMP_NOT_AUTHORIZED, $exp_id);
    753766                return 1;
     
    13431356    my $adjusted = 0;
    13441357
    1345     my $MJD_PS1_BEGIN = 54922;    # 2009-04-01
    1346     my $MJD_PS1_END   = 57082;    # 2015-03-01
    1347 
    1348     if ($row->{accessLevel} == 1) {
    1349         # User has access to PS1 data only
    1350         my $mjd_max_user = $row->{MJD_MAX};
    1351         if (!$mjd_max_user or $mjd_max_user > $MJD_PS1_END) {
    1352             $$r_mjd_max = $MJD_PS1_END;
     1358    my $accessLevel = $row->{accessLevel};
     1359    my $project = $row->{PROJECT};
     1360    my $mjd_max_user = $row->{MJD_MAX};
     1361
     1362    my $key = "$project.$accessLevel";
     1363
     1364    my $levelInfo = $accessLevelCache{$key};
     1365
     1366    if (!$levelInfo) {
     1367        my $cmd = "$pstamptool -listaccesslevel -accessLevel $accessLevel -project_name $project";
     1368        my $results = runToolAndParse($cmd, $verbose);
     1369        if (!$results or !$results->[0]) {
     1370            my_die("failed to find accessLevel info for project: $project level: $accessLevel\n", $PS_EXIT_CONFIG_ERROR);
     1371        }
     1372        $levelInfo = $results->[0];
     1373        $accessLevelCache{$key} = $levelInfo;
     1374    }
     1375
     1376    my $mjd_max_thisLevel = $levelInfo->{mjd_max};
     1377    if ($mjd_max_thisLevel)  {
     1378        # This project has a limit for this level
     1379        # adjust the user supplied limit unless it is less than the maximum
     1380
     1381        if (!$mjd_max_user or ($mjd_max_user > $mjd_max_thisLevel)) {
     1382            $$r_mjd_max = $mjd_max_thisLevel;
    13531383            $adjusted = 1;
    13541384        }
    13551385    }
     1386
    13561387    return $adjusted;
    13571388}
Note: See TracChangeset for help on using the changeset viewer.