Changeset 38451
- Timestamp:
- Jun 12, 2015, 10:02:47 PM (11 years ago)
- Location:
- branches/eam_branches/ipp-20150419
- Files:
-
- 10 edited
- 1 copied
-
. (modified) (1 prop)
-
dbconfig/pstamp.md (modified) (1 diff)
-
ippScripts/scripts/lap_queue_diff.pl (modified) (4 diffs)
-
ippTools/share/Makefile.am (modified) (1 diff)
-
ippTools/share/pstamptool_addaccesslevel.sql (copied) (copied from trunk/ippTools/share/pstamptool_addaccesslevel.sql )
-
ippTools/share/pxadmin_create_tables.sql (modified) (1 diff)
-
ippTools/share/pxadmin_drop_tables.sql (modified) (2 diffs)
-
ippTools/src/pstamptool.c (modified) (7 diffs)
-
ippTools/src/pstamptool.h (modified) (1 diff)
-
ippTools/src/pstamptoolConfig.c (modified) (5 diffs)
-
pstamp/scripts/pstampparse.pl (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ipp-20150419
- Property svn:mergeinfo changed
/trunk (added) merged: 38157-38160
- Property svn:mergeinfo changed
-
branches/eam_branches/ipp-20150419/dbconfig/pstamp.md
r35295 r38451 69 69 END 70 70 71 pstampWebRequest METADATA71 pstampWebRequest METADATA 72 72 num S64 0 # Primary Key AUTO_INCREMENT 73 73 END 74 74 75 pstampFile METADATA75 pstampFile METADATA 76 76 file_id S64 0 # Primary Key AUTO_INCREMENT 77 77 job_id S64 0 78 78 path STR 255 79 end 79 END 80 81 pstampUserDomain METADATA 82 domainName STR 64 83 accessLevel S32 0 84 defaultProduct STR 255 85 defaultLabel STR 64 86 END 87 88 pstampUser 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 94 END 95 96 pstampAccessLevel 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 101 END 102 -
branches/eam_branches/ipp-20150419/ippScripts/scripts/lap_queue_diff.pl
r38096 r38451 25 25 my ( $help, $verbose, $debug, $do_nothing); 26 26 my ( $camera, $dbname); 27 my ( $lap_id );27 my ( $lap_id, $data_group ); 28 28 my ( $queue_list ); 29 29 … … 38 38 39 39 'lap_id=s' => \$lap_id, 40 'data_group=s' => \$data_group, 40 41 'queue_list=s' => \$queue_list, 41 42 ) or pod2usage ( 2 ); 42 43 pod2usage( -msg => "Unknown option: @ARGV", -exitval => 2 ) if @ARGV; 43 44 pod2usage( 44 -msg => "--lap_id isrequired",45 -msg => "--lap_id --data_group --queue_list are required", 45 46 -exitval => 3, 46 47 ) unless 47 defined $lap_id; 48 defined $lap_id and 49 defined $queue_list and 50 defined $data_group 51 ; 48 52 49 53 unless (defined $dbname) { … … 91 95 if ($can_diff == 1) { 92 96 # 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); 94 98 print "Made diff for $warp_id => $diff_id\n"; 95 99 $Ndiff++; … … 255 259 my $warp_id = shift; 256 260 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 257 270 if (($debug)||($do_nothing)) { 271 print "DEBUG! WOULD RUN: >> $command\n"; 258 272 return(99); 259 273 } 260 274 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;268 275 my ($success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) = 269 276 run(command => $command, verbose => $verbose); -
branches/eam_branches/ipp-20150419/ippTools/share/Makefile.am
r38134 r38451 359 359 pstamptool_stopdependentjob.sql \ 360 360 pstamptool_updatejob.sql \ 361 pstamptool_addaccesslevel.sql \ 361 362 pxadmin_create_tables.sql \ 362 363 pxadmin_create_mirror_tables.sql \ -
branches/eam_branches/ipp-20150419/ippTools/share/pxadmin_create_tables.sql
r37885 r38451 1511 1511 ) ENGINE=innodb DEFAULT CHARSET=latin1; 1512 1512 1513 CREATE 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 1521 CREATE 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 1530 CREATE 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 1513 1540 CREATE TABLE pstampWebRequest ( 1514 1541 num BIGINT AUTO_INCREMENT, -
branches/eam_branches/ipp-20150419/ippTools/share/pxadmin_drop_tables.sql
r37885 r38451 69 69 DROP TABLE IF EXISTS pstampProject; 70 70 DROP TABLE IF EXISTS pstampRequest; 71 DROP TABLE IF EXISTS pstampDependent; 72 DROP TABLE IF EXISTS pstampWebRequest; 73 DROP TABLE IF EXISTS pstampFile; 71 74 DROP TABLE IF EXISTS pstampJob; 75 DROP TABLE IF EXISTS pstampUserDomain; 76 DROP TABLE IF EXISTS pstampUser; 77 DROP TABLE IF EXISTS pstampAccessLevel; 72 78 DROP TABLE IF EXISTS distRun; 73 79 DROP TABLE IF EXISTS distTarget; … … 85 91 DROP TABLE IF EXISTS publishRun; 86 92 DROP TABLE IF EXISTS publishDone; 87 DROP TABLE IF EXISTS pstampDependent;88 DROP TABLE IF EXISTS pstampFile;89 93 DROP TABLE IF EXISTS staticskyInput; 90 94 DROP TABLE IF EXISTS staticskyResult; 91 95 DROP TABLE IF EXISTS staticskyRun; 92 96 DROP TABLE IF EXISTS Label; 93 DROP TABLE IF EXISTS pstampWebRequest;94 97 DROP TABLE IF EXISTS chipBackgroundRun; 95 98 DROP TABLE IF EXISTS chipBackgroundImfile; -
branches/eam_branches/ipp-20150419/ippTools/src/pstamptool.c
r38134 r38451 61 61 static bool deletefileMode(pxConfig *config); 62 62 63 static bool adddomainMode(pxConfig * config); 64 static bool updatedomainMode(pxConfig * config); 63 65 static bool listdomainMode(pxConfig *config); 66 static bool adduserMode(pxConfig * config); 67 static bool updateuserMode(pxConfig * config); 64 68 static bool listuserMode(pxConfig * config); 69 static bool addaccesslevelMode(pxConfig * config); 70 static bool updateaccesslevelMode(pxConfig * config); 71 static bool listaccesslevelMode(pxConfig * config); 65 72 66 73 # define MODECASE(caseName, func) \ … … 114 121 MODECASE(PSTAMPTOOL_MODE_DELETEFILE, deletefileMode); 115 122 123 MODECASE(PSTAMPTOOL_MODE_ADDDOMAIN, adddomainMode); 124 MODECASE(PSTAMPTOOL_MODE_UPDATEDOMAIN, updatedomainMode); 116 125 MODECASE(PSTAMPTOOL_MODE_LISTDOMAIN, listdomainMode); 126 MODECASE(PSTAMPTOOL_MODE_ADDUSER, adduserMode); 127 MODECASE(PSTAMPTOOL_MODE_UPDATEUSER, updateuserMode); 117 128 MODECASE(PSTAMPTOOL_MODE_LISTUSER, listuserMode); 129 MODECASE(PSTAMPTOOL_MODE_ADDACCESSLEVEL, addaccesslevelMode); 130 MODECASE(PSTAMPTOOL_MODE_UPDATEACCESSLEVEL, updateaccesslevelMode); 131 MODECASE(PSTAMPTOOL_MODE_LISTACCESSLEVEL, listaccesslevelMode); 118 132 119 133 default: … … 1709 1723 } 1710 1724 1725 static 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 } 1746 static 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 1711 1801 static bool listdomainMode(pxConfig *config) 1712 1802 { … … 1715 1805 psMetadata *where = psMetadataAlloc(); 1716 1806 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", "="); 1718 1808 1719 1809 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); … … 1764 1854 return true; 1765 1855 } 1856 static 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 } 1879 static 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 } 1766 1935 static bool listuserMode(pxConfig *config) 1767 1936 { … … 1771 1940 PXOPT_COPY_STR(config->args, where, "-user", "userName", "="); 1772 1941 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", "="); 1774 1943 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1775 1944 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); … … 1822 1991 return true; 1823 1992 } 1993 1994 static 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 } 2030 static bool updateaccesslevelMode(pxConfig *config) 2031 { 2032 return false; 2033 } 2034 static 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 } 1824 2090 # endif -
branches/eam_branches/ipp-20150419/ippTools/src/pstamptool.h
r38134 r38451 65 65 PSTAMPTOOL_MODE_ADDACCESSLEVEL, 66 66 PSTAMPTOOL_MODE_UPDATEACCESSLEVEL, 67 PSTAMPTOOL_MODE_LISTACC CESSLEVEL,67 PSTAMPTOOL_MODE_LISTACCESSLEVEL, 68 68 } pstamptoolMode; 69 69 -
branches/eam_branches/ipp-20150419/ippTools/src/pstamptoolConfig.c
r38134 r38451 277 277 // -project 278 278 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); 280 280 psMetadataAddBool(projectArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 281 281 … … 303 303 psMetadataAddS64(deletefileArgs, PS_LIST_TAIL, "-job_id", 0, "select by job ID (required)", 0); 304 304 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); 311 320 312 321 // -listdomain 313 322 psMetadata *listdomainArgs = psMetadataAlloc(); 314 323 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); 316 325 psMetadataAddU64(listdomainArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 317 326 psMetadataAddBool(listdomainArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); … … 319 328 // -adduser 320 329 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); 326 343 327 344 // -listuser … … 329 346 psMetadataAddStr(listuserArgs, PS_LIST_TAIL, "-user", 0, "select by user name", NULL); 330 347 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); 332 349 psMetadataAddU64(listuserArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 333 350 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); 334 375 335 376 PXOPT_ADD_MODE("-addreq", "", PSTAMPTOOL_MODE_ADDREQ, addreqArgs); … … 365 406 PXOPT_ADD_MODE("-deletefile", "", PSTAMPTOOL_MODE_DELETEFILE, deletefileArgs); 366 407 408 PXOPT_ADD_MODE("-adddomain", "", PSTAMPTOOL_MODE_ADDDOMAIN, adddomainArgs); 409 PXOPT_ADD_MODE("-updatedomain", "", PSTAMPTOOL_MODE_UPDATEDOMAIN, updatedomainArgs); 367 410 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); 368 413 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); 369 416 370 417 if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) { -
branches/eam_branches/ipp-20150419/pstamp/scripts/pstampparse.pl
r38133 r38451 33 33 my $dest_requires_magic; 34 34 my $dump_params = 0; 35 my $new_email; 36 37 my %accessLevelCache; 35 38 36 39 # set this to true to disable update processing … … 43 46 'product=s' => \$product, 44 47 'label=s' => \$label, 48 'new_email=s' => \$new_email, 45 49 'mode=s' => \$mode, 46 50 'need_magic'=> \$dest_requires_magic, … … 142 146 print STDERR "Note that EMAIL will not be optional\n"; 143 147 148 # if need be we can hack Peter Veres' email in here if label = 'WEB.UP' and req_name like 'Peter_Veres%' 149 144 150 } elsif (!$email) { 145 151 my_die("ERROR: Required parameter EMAIL not found in request file header.\n", $PSTAMP_INVALID_REQUEST) 146 152 } 153 154 147 155 148 156 … … 158 166 my_die("email not supplied in version $extver request file $request_file_name\n", $PSTAMP_INVALID_REQUEST) 159 167 unless $email; 160 161 # XXX check for "valid" $email162 168 } else { 163 169 # for version 1 file the action is process and email is not used … … 167 173 168 174 print "Request Header Keywords EXTVER: $extver REQ_NAME: $req_name ACTION: $action EMAIL: $email\n"; 175 176 if ($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 } 169 181 170 182 # check for duplicate request name … … 239 251 240 252 # 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? 242 254 if ($label and $label eq 'WEB.UP') { 243 255 if ($labelForUser) { … … 749 761 750 762 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"; 752 765 insertFakeJobForRow($row, $job_num, $PSTAMP_NOT_AUTHORIZED, $exp_id); 753 766 return 1; … … 1343 1356 my $adjusted = 0; 1344 1357 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; 1353 1383 $adjusted = 1; 1354 1384 } 1355 1385 } 1386 1356 1387 return $adjusted; 1357 1388 }
Note:
See TracChangeset
for help on using the changeset viewer.
