Skip to content

Commit b691826

Browse files
add del_table method
1 parent 442dc88 commit b691826

File tree

1 file changed

+67
-3
lines changed

1 file changed

+67
-3
lines changed

src/sasctl/_services/cas_management.py

Lines changed: 67 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -336,9 +336,10 @@ def update_state_table(
336336
name : str, required
337337
Name of the table.
338338
caslib : str, optional
339-
Name of the caslib. Defaults to CASUSER.
339+
Name of the caslib. Defaults to `CASUSER`.
340340
server : str, optional
341341
Server where the `caslib` is registered.
342+
Defaults to `cas-shared-default`.
342343
qparams: dict, optional
343344
Additional query parameters.
344345
Valid keys are `sessionId`, `scope`, `sourceTableName`, `createRelationships`
@@ -352,6 +353,7 @@ def update_state_table(
352353
RestObj
353354
354355
"""
356+
server = server or DEFAULT_SERVER
355357
caslib = caslib or DEFAULT_CASLIB
356358

357359
if value in ["loaded", "unloaded"]:
@@ -415,15 +417,15 @@ def promote_table(cls, name: str, sessId: str, caslib: str, server: str = None):
415417
caslib : str
416418
Name of the caslib.
417419
server : str
418-
Server where the `caslib` is registered. Defaults to CASUSER
420+
Server where the `caslib` is registered.
421+
Defaults to `cas-shared-default`.
419422
420423
Returns
421424
-------
422425
RestObj
423426
424427
"""
425428
server = server or DEFAULT_SERVER
426-
caslib = caslib or DEFAULT_CASLIB
427429

428430
query = {"value": "global", "sessionId": sessId}
429431

@@ -492,3 +494,65 @@ def save_table(
492494
json=properties,
493495
)
494496
return sess
497+
498+
@classmethod
499+
def del_table(
500+
cls,
501+
name: str,
502+
qParam: dict = None,
503+
caslib: str = None,
504+
server: str = None
505+
):
506+
"""Deletes a table from Caslib source. Note that is not an unload.
507+
This operation physically removes the source table (if the source is writable).
508+
For path-based caslibs, this physically removes the file.
509+
510+
Parameters
511+
----------
512+
name : str
513+
Name of the table.
514+
qParam : dict
515+
Query parameters. Note that some are required.
516+
The allowed query parameters are `sessionId`,
517+
`sourceTableName`, `quiet`, `removeAcs`.
518+
caslib : str
519+
Name of the caslib. Defaults to 'CASUSER'
520+
server : str
521+
Server where the `caslib` is registered.
522+
Defaults to 'cas-shared-default'.
523+
524+
Returns
525+
-------
526+
RestObj
527+
"""
528+
529+
server = server or DEFAULT_SERVER
530+
caslib = caslib or DEFAULT_CASLIB
531+
532+
allowedQ = [
533+
"sessionId",
534+
"sourceTableName",
535+
"quiet",
536+
"removeAcs"
537+
]
538+
539+
if isinstance(qParam,dict) and all(key in allowedQ for key in qParam.keys()):
540+
if ("sourceTableName" not in qParam.keys()
541+
and "quiet" not in qParam.keys()
542+
and "removeAcs" not in qParam.keys()):
543+
raise Exception(
544+
"Missing required query parameters `sourceTableName`, `quiet`, `removeAcs`"
545+
)
546+
else:
547+
query = qParam
548+
else:
549+
raise ValueError(
550+
"The only acceptable query parameters are %s and must be passed in a dictionary"
551+
% (allowedQ)
552+
)
553+
554+
tbl = cls.delete(
555+
"servers/%s/caslibs/%s/tables/%s"%(server,caslib,name),
556+
params=query
557+
)
558+
return tbl

0 commit comments

Comments
 (0)