rda-python-common 1.0.2__tar.gz → 1.0.5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of rda-python-common might be problematic. Click here for more details.

Files changed (21) hide show
  1. {rda_python_common-1.0.2 → rda_python_common-1.0.5}/PKG-INFO +1 -1
  2. {rda_python_common-1.0.2 → rda_python_common-1.0.5}/pyproject.toml +2 -1
  3. {rda_python_common-1.0.2 → rda_python_common-1.0.5}/src/rda_python_common/PgDBI.py +36 -14
  4. {rda_python_common-1.0.2 → rda_python_common-1.0.5}/src/rda_python_common/PgLOG.py +20 -20
  5. {rda_python_common-1.0.2 → rda_python_common-1.0.5}/src/rda_python_common.egg-info/PKG-INFO +1 -1
  6. {rda_python_common-1.0.2 → rda_python_common-1.0.5}/LICENSE +0 -0
  7. {rda_python_common-1.0.2 → rda_python_common-1.0.5}/README.md +0 -0
  8. {rda_python_common-1.0.2 → rda_python_common-1.0.5}/setup.cfg +0 -0
  9. {rda_python_common-1.0.2 → rda_python_common-1.0.5}/src/rda_python_common/PgCMD.py +0 -0
  10. {rda_python_common-1.0.2 → rda_python_common-1.0.5}/src/rda_python_common/PgFile.py +0 -0
  11. {rda_python_common-1.0.2 → rda_python_common-1.0.5}/src/rda_python_common/PgGLBS.py +0 -0
  12. {rda_python_common-1.0.2 → rda_python_common-1.0.5}/src/rda_python_common/PgLock.py +0 -0
  13. {rda_python_common-1.0.2 → rda_python_common-1.0.5}/src/rda_python_common/PgOPT.py +0 -0
  14. {rda_python_common-1.0.2 → rda_python_common-1.0.5}/src/rda_python_common/PgPGS.py +0 -0
  15. {rda_python_common-1.0.2 → rda_python_common-1.0.5}/src/rda_python_common/PgSIG.py +0 -0
  16. {rda_python_common-1.0.2 → rda_python_common-1.0.5}/src/rda_python_common/PgSplit.py +0 -0
  17. {rda_python_common-1.0.2 → rda_python_common-1.0.5}/src/rda_python_common/PgUtil.py +0 -0
  18. {rda_python_common-1.0.2 → rda_python_common-1.0.5}/src/rda_python_common/__init__.py +0 -0
  19. {rda_python_common-1.0.2 → rda_python_common-1.0.5}/src/rda_python_common.egg-info/SOURCES.txt +0 -0
  20. {rda_python_common-1.0.2 → rda_python_common-1.0.5}/src/rda_python_common.egg-info/dependency_links.txt +0 -0
  21. {rda_python_common-1.0.2 → rda_python_common-1.0.5}/src/rda_python_common.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: rda_python_common
3
- Version: 1.0.2
3
+ Version: 1.0.5
4
4
  Summary: RDA Python common library codes shared by other RDA python packages
5
5
  Author-email: Zaihua Ji <zji@ucar.edu>
6
6
  Project-URL: Homepage, https://github.com/NCAR/rda-python-common
@@ -4,7 +4,8 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "rda_python_common"
7
- version = "1.0.2"
7
+ version = "1.0.5"
8
+
8
9
  authors = [
9
10
  { name="Zaihua Ji", email="zji@ucar.edu" },
10
11
  ]
@@ -37,9 +37,11 @@ CHCODE = 1042
37
37
 
38
38
  # hard coded db ports for dbnames
39
39
  DBPORTS = {
40
- 'default' : 0 # skip default port number 5432
40
+ 'default' : 5432
41
41
  }
42
42
 
43
+ DBPASS = {}
44
+
43
45
  # hard coded db names for given schema names
44
46
  DBNAMES = {
45
47
  'ivaddb' : 'ivaddb',
@@ -79,7 +81,6 @@ fmthr = lambda fn: "extract(hour from {})::int".format(fn)
79
81
  def SETPGDBI(name, value):
80
82
  PGDBI[name] = PgLOG.get_environment(name, value)
81
83
 
82
- SETPGDBI('CDHOST', 'rda-db.ucar.edu') # common domain for db host for master server
83
84
  SETPGDBI('DEFDB', 'rdadb')
84
85
  SETPGDBI("DEFSC", 'dssdb')
85
86
  SETPGDBI('DEFHOST', PgLOG.PGLOG['PSQLHOST'])
@@ -88,7 +89,7 @@ SETPGDBI("DEFSOCK", '')
88
89
  SETPGDBI("DBNAME", PGDBI['DEFDB'])
89
90
  SETPGDBI("SCNAME", PGDBI['DEFSC'])
90
91
  SETPGDBI("LNNAME", PGDBI['DEFSC'])
91
- SETPGDBI("PWNAME", PGDBI['DEFSC'])
92
+ SETPGDBI("PWNAME", None)
92
93
  SETPGDBI("DBHOST", (os.environ['DSSDBHOST'] if os.environ.get('DSSDBHOST') else PGDBI['DEFHOST']))
93
94
  SETPGDBI("DBPORT", 0)
94
95
  SETPGDBI("ERRLOG", PgLOG.LOGERR) # default error logact
@@ -242,12 +243,12 @@ def set_scname(dbname = None, scname = None, lnname = None, pwname = None, dbhos
242
243
  PGDBI['DBNAME'] = dbname
243
244
  changed = 1
244
245
  if scname and scname != PGDBI['SCNAME']:
245
- PGDBI['PWNAME'] = PGDBI['LNNAME'] = PGDBI['SCNAME'] = scname
246
+ PGDBI['LNNAME'] = PGDBI['SCNAME'] = scname
246
247
  changed = 1
247
248
  if lnname and lnname != PGDBI['LNNAME']:
248
- PGDBI['PWNAME'] = PGDBI['LNNAME'] = lnname
249
+ PGDBI['LNNAME'] = lnname
249
250
  changed = 1
250
- if pwname and pwname != PGDBI['PWNAME']:
251
+ if pwname != PGDBI['PWNAME']:
251
252
  PGDBI['PWNAME'] = pwname
252
253
  changed = 1
253
254
  if dbhost and dbhost != PGDBI['DBHOST']:
@@ -475,7 +476,8 @@ def pgbatch(sqlfile, foreground = 0):
475
476
 
476
477
  dbhost = 'localhost' if PGDBI['DBSHOST'] == PgLOG.PGLOG['HOSTNAME'] else PGDBI['DBHOST']
477
478
  options = "-h {} -p {}".format(dbhost, PGDBI['DBPORT'])
478
- os.environ['PGPASSWORD'] = PGDBI['PWNAME']
479
+ pwname = get_pgpass_password()
480
+ os.environ['PGPASSWORD'] = pwname
479
481
  options += " -U {} {}".format(PGDBI['LNNAME'], PGDBI['DBNAME'])
480
482
 
481
483
  if not sqlfile: return options
@@ -506,20 +508,16 @@ def pgconnect(reconnect = 0, pgcnt = 0, autocommit = True):
506
508
  elif reconnect:
507
509
  reconnect = 0 # initial connection
508
510
 
509
- # if PGDBI['VWHOST'] and PGDBI['VWHOME'] and PGDBI['DBSHOST'] == PGDBI['VWSHOST'] and PGDBI['SCNAME'] == PGDBI['VWNAME']:
510
- # slave = "/{}/{}.slave".format(PGDBI['VWHOME'], PGDBI['VWHOST'])
511
- # if not op.exists(slave): default_scname()
512
-
513
511
  while True:
514
512
  config = {'database' : PGDBI['DBNAME'],
515
- 'user' : PGDBI['LNNAME'],
516
- 'password' : PGDBI['PWNAME']}
513
+ 'user' : PGDBI['LNNAME']}
517
514
  if PGDBI['DBSHOST'] == PgLOG.PGLOG['HOSTNAME']:
518
515
  config['host'] = 'localhost'
519
516
  else:
520
- config['host'] = PGDBI['DBHOST'] if PGDBI['DBHOST'] else PGDBI['CDHOST']
517
+ config['host'] = PGDBI['DBHOST'] if PGDBI['DBHOST'] else PGDBI['DEFHOST']
521
518
  if not PGDBI['DBPORT']: PGDBI['DBPORT'] = get_dbport(PGDBI['DBNAME'])
522
519
  if PGDBI['DBPORT']: config['port'] = PGDBI['DBPORT']
520
+ config['password'] = get_pgpass_password()
523
521
 
524
522
  sqlstr = "psycopg2.connect(**{})".format(config)
525
523
  if PgLOG.PGLOG['DBGLEVEL']: PgLOG.pgdbg(1000, sqlstr)
@@ -2216,3 +2214,27 @@ def pgname(str, sign = None):
2216
2214
  nstr = '"{}"'.format(nstr)
2217
2215
 
2218
2216
  return nstr
2217
+
2218
+ #
2219
+ # get a postgres password for given host, port, dbname, usname
2220
+ #
2221
+ def get_pgpass_password():
2222
+
2223
+ if PGDBI['PWNAME']: return PGDBI['PWNAME']
2224
+ if not DBPASS: read_pgpass()
2225
+ return DBPASS.get((PGDBI['DBSHOST'], PGDBI['DBPORT'], PGDBI['DBNAME'], PGDBI['LNNAME']))
2226
+
2227
+ #
2228
+ # Reads the .pgpass file and returns a dictionary of credentials.
2229
+ #
2230
+ def read_pgpass():
2231
+
2232
+ try:
2233
+ with open(PgLOG.PGLOG['DSSHOME'] + '/.pgpass', "r") as f:
2234
+ for line in f:
2235
+ line = line.strip()
2236
+ if not line or line.startswith("#"): continue
2237
+ dbhost, dbport, dbname, usname, pwname = line.split(":")
2238
+ DBPASS[(dbhost, dbport, dbname, usname)] = pwname
2239
+ except FileNotFoundError:
2240
+ pass
@@ -109,7 +109,7 @@ PGLOG = { # more defined in untaint_suid() with environment variables
109
109
  'DSIDCHRS' : "d",
110
110
  'DOSHELL' : False,
111
111
  'NEWDSID' : True,
112
- 'BCHHOSTS' : "SLURM:PBS",
112
+ 'BCHHOSTS' : "PBS",
113
113
  'HOSTTYPE' : 'dav', # default HOSTTYPE
114
114
  'EMLMAX' : 256, # up limit of email line count
115
115
  'PGBATCH' : '', # current batch service name, SLURM or PBS
@@ -1219,14 +1219,14 @@ def set_common_pglog():
1219
1219
  PGLOG['NOTAROOT'] = '|'.join([PGLOG['OLDAROOT'], PGLOG['OLDBROOT'], PGLOG['BACKROOT']])
1220
1220
  PGLOG['NOTBROOT'] = '|'.join([PGLOG['OLDAROOT'], PGLOG['OLDBROOT'], PGLOG['ARCHROOT']])
1221
1221
  PGLOG['ALLROOTS'] = '|'.join([PGLOG['OLDAROOT'], PGLOG['OLDBROOT'], PGLOG['ARCHROOT'], PGLOG['BACKROOT']])
1222
- SETPGLOG("USRHOME", "PGUSRHOME")
1223
- SETPGLOG("DSSHOME", "PGDSSHOME")
1224
- SETPGLOG("ADDPATH", "PGADDPATH")
1225
- SETPGLOG("ADDLIB", "PGADDLIB")
1226
- SETPGLOG("OTHPATH", "PGOTHPATH")
1227
- SETPGLOG("PSQLHOME", "PGPSQLHOME")
1228
- SETPGLOG("DSGHOSTS", "PGDSGHOSTS")
1229
- SETPGLOG("DSIDCHRS", "PGDSIDCHRS")
1222
+ SETPGLOG("USRHOME", "/glade/u/home")
1223
+ SETPGLOG("DSSHOME", "/glade/u/home/rdadata")
1224
+ SETPGLOG("ADDPATH", "")
1225
+ SETPGLOG("ADDLIB", "")
1226
+ SETPGLOG("OTHPATH", "")
1227
+ SETPGLOG("PSQLHOME", "/usr/pgsql-15")
1228
+ SETPGLOG("DSGHOSTS", "")
1229
+ SETPGLOG("DSIDCHRS", "d")
1230
1230
 
1231
1231
  if not os.getenv('HOME'): os.environ['HOME'] = "{}/{}".format(PGLOG['USRHOME'], PGLOG['CURUID'])
1232
1232
  SETPGLOG("HOMEBIN", os.environ.get('HOME') + "/bin")
@@ -1279,7 +1279,7 @@ def set_common_pglog():
1279
1279
  SETPGLOG("PUSGDIR", PGLOG['DSSDBHM']+"/prog_usage") # path to program usage files
1280
1280
  SETPGLOG("DSSURL", "https://rda.ucar.edu") # current dss web URL
1281
1281
  SETPGLOG("RQSTURL", "/datasets/request") # request URL path
1282
- SETPGLOG("WEBSERVERS", "PGWEBSERVERS") # webserver names for Web server
1282
+ SETPGLOG("WEBSERVERS", "rda-web-prod01.ucar.edu:rda-web-test01.ucar.edu") # webserver names for Web server
1283
1283
  PGLOG['WEBHOSTS'] = PGLOG['WEBSERVERS'].split(':') if PGLOG['WEBSERVERS'] else []
1284
1284
  SETPGLOG("DBMODULE", '')
1285
1285
  SETPGLOG("LOCDATA", "/data")
@@ -1288,21 +1288,21 @@ def set_common_pglog():
1288
1288
  SETPGLOG("DSSWEB", PGLOG['LOCDATA']+"/web")
1289
1289
  SETPGLOG("DSWHOME", PGLOG['DSSWEB']+"/datasets") # datast web root path
1290
1290
  PGLOG['HOMEROOTS'] = "{}|{}".format(PGLOG['DSSHOME'], PGLOG['DSWHOME'])
1291
- SETPGLOG("DSSDATA", "PGDSSDATA") # dss data root path
1291
+ SETPGLOG("DSSDATA", "/glade/campaign/collections/rda") # dss data root path
1292
1292
  SETPGLOG("DSDHOME", PGLOG['DSSDATA']+"/data") # dataset data root path
1293
1293
  SETPGLOG("DECSHOME", PGLOG['DSSDATA']+"/decsdata") # dataset decsdata root path
1294
1294
  SETPGLOG("DSHHOME", PGLOG['DECSHOME']+"/helpfiles") # dataset help root path
1295
1295
  SETPGLOG("UPDTWKP", PGLOG['DSSDATA']+"/work") # dsupdt work root path
1296
1296
  SETPGLOG("TRANSFER", PGLOG['DSSDATA']+"/transfer") # dss transfer partition
1297
1297
  SETPGLOG("RQSTHOME", PGLOG['TRANSFER']+"/dsrqst") # dsrqst home
1298
- SETPGLOG("DSAHOME", "PGDSAHOME") # dataset data alternate root path
1299
- SETPGLOG("RQSTALTH", "PGRQSTALTH") # alternate dsrqst path
1300
- SETPGLOG("GPFSHOST", "PGGPFSHOST") # empty if writable to glade
1301
- SETPGLOG("PSQLHOST", "PGPSQLHOST") # host name for postgresql server
1302
- SETPGLOG("SLMHOSTS", "PGSLMHOSTS") # host names for SLURM server
1303
- SETPGLOG("PBSHOSTS", "PGPBSHOSTS") # host names for PBS server
1304
- SETPGLOG("CHKHOSTS", "PGCHKHOSTS") # host names for dscheck daemon
1305
- SETPGLOG("PVIEWHOST", "PGPVIEWHOST") # host name for view only postgresql server
1298
+ SETPGLOG("DSAHOME", "") # dataset data alternate root path
1299
+ SETPGLOG("RQSTALTH", "") # alternate dsrqst path
1300
+ SETPGLOG("GPFSHOST", "") # empty if writable to glade
1301
+ SETPGLOG("PSQLHOST", "rda-db.ucar.edu") # host name for postgresql server
1302
+ SETPGLOG("SLMHOSTS", "cheyenne:casper") # host names for SLURM server
1303
+ SETPGLOG("PBSHOSTS", "cheyenne:casper") # host names for PBS server
1304
+ SETPGLOG("CHKHOSTS", "") # host names for dscheck daemon
1305
+ SETPGLOG("PVIEWHOST", "rda-pgdb-02.ucar.edu") # host name for view only postgresql server
1306
1306
  SETPGLOG("FTPUPLD", PGLOG['TRANSFER']+"/rossby") # ftp upload path
1307
1307
  PGLOG['GPFSROOTS'] = "{}|{}|{}".format(PGLOG['DSDHOME'], PGLOG['UPDTWKP'], PGLOG['RQSTHOME'])
1308
1308
 
@@ -1311,7 +1311,7 @@ def set_common_pglog():
1311
1311
  os.environ['history'] = '0'
1312
1312
 
1313
1313
  # set tmp dir
1314
- SETPGLOG("TMPPATH", "PGTMPPATH")
1314
+ SETPGLOG("TMPPATH", "/glade/campaign/collections/rda/work/ptmp")
1315
1315
  if not PGLOG['TMPPATH']: PGLOG['TMPPATH'] = "/data/ptmp"
1316
1316
 
1317
1317
  SETPGLOG("TMPDIR", '')
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: rda_python_common
3
- Version: 1.0.2
3
+ Version: 1.0.5
4
4
  Summary: RDA Python common library codes shared by other RDA python packages
5
5
  Author-email: Zaihua Ji <zji@ucar.edu>
6
6
  Project-URL: Homepage, https://github.com/NCAR/rda-python-common