KMPURG1 ;SP/JML - VSM GET REST functions ;7/1/2025
;;4.0;CAPACITY MANAGEMENT;**5**;3/1/2018;Build 9
;
;
;
CONFIGG() ;
N KMPRET,KMPSITE,KMPCPF,KMPMON,KMPF,KMPMKEY,KMPGROUP,KMPMG
;
S KMPRET=##class(%DynamicObject).%New()
D SITEARR^KMPUTLW(.KMPSITE)
D CPFARR^KMPUTLW(.KMPCPF)
D MONARR^KMPUTLW(.KMPMON)
S KMPMG=""
I $$EXIST^%R("R1XUMSAR.int",$ZDEFNSP) D
.D GETSENDTO^R1XUMSAR(.KMPMG)
W "<H1>Site</H1>"
S KMPF=""
F S KMPF=$O(KMPSITE(KMPF)) Q:KMPF="" D
.W KMPF_": "_$G(KMPSITE(KMPF))_"<BR>"
W "<H1>CPF</H1>"
W "<H2>CPF Startup</H2>"
S KMPF=""
F S KMPF=$O(KMPCPF("Startup",KMPF)) Q:KMPF="" D
.W KMPF_": "_KMPCPF("Startup",KMPF)_"<BR>"
W "<H2>CPF Mirror</H2>"
S KMPF=""
F S KMPF=$O(KMPCPF("MirrorMember",KMPF)) Q:KMPF="" D
.W KMPF_": "_KMPCPF("MirrorMember",KMPF)_"<BR>"
W "<H2>CPF Config</H2>"
S KMPF=""
F S KMPF=$O(KMPCPF("config",KMPF)) Q:KMPF="" D
.W KMPF_": "_KMPCPF("config",KMPF)_"<BR>"
W "<H1>Monitors</H1>"
S KMPMKEY=""
F S KMPMKEY=$O(KMPMON(KMPMKEY)) Q:KMPMKEY="" D
.W "<H3>"_KMPMKEY_"</H3>"
.S KMPF=""
.F S KMPF=$O(KMPMON(KMPMKEY,KMPF)) Q:KMPF="" D
..W KMPF_": "_KMPMON(KMPMKEY,KMPF)_"<BR>"
S KMPGROUP=""
W "<H3>Local Support Email</H3>"
F S KMPGROUP=$O(KMPMG(KMPGROUP)) Q:KMPGROUP="" D
.W KMPGROUP_"<BR>"
Q
;
GLOBUFFG() ;
N KMPSITE,KMPF,KMPRNS,KMPTBUFF,KMPBUFF,KMPI,KMPL
D SITEARR^KMPUTLW(.KMPSITE)
W "<H1>Site</H1>"
S KMPF=""
F S KMPF=$O(KMPSITE(KMPF)) Q:KMPF="" D
.W KMPF_": "_$G(KMPSITE(KMPF))_"<BR>"
W "<H2>Global Buffers</H2>"
S KMPTBUFF=##class(KMP.Utilities).getTotalBuffers()
W "<TABLE width='50%'>"
W "<TR><TD>Total Buffers: "_KMPTBUFF_"</TD><TD></TD><TD></TD></TR>"
W "<TR><TD> </TD><TD></TD><TD></TD></TR>"
W "<TR><TH>Global</TH><TH>Database</TH><TH>Percentage</TH></TR>"
S KMPBUFF=##class(KMP.Utilities).getBuffers()
F KMPI=1:1:KMPBUFF.Count() D
.S KMPL=KMPBUFF.GetAt(KMPI)
.W "<TR><TD>"_$LISTGET(KMPL,1)_"</TD><TD>"_$LISTGET(KMPL,2)_"</TD><TD>"_$LISTGET(KMPL,3)_"</TD></TR>"
W "</TABLE>"
Q
;
HTTPMETG() ;
N KMPSITE,KMPF,KMPMCHK,KMPDATE,KMPDCHK,KMPSUB,KMPDAY,KMPMTYP,KMPNODE,KMPT,KMPTIME,KMPDATA
D SITEARR^KMPUTLW(.KMPSITE)
W "<H1>Site</H1>"
S KMPF=""
F S KMPF=$O(KMPSITE(KMPF)) Q:KMPF="" D
.W KMPF_": "_$G(KMPSITE(KMPF))_"<BR>"
S KMPMCHK=%request.Get("MONTYPE")
I KMPMCHK="" S KMPMCHK="ALL"
S KMPDATE=%request.Get("DATE")
I KMPDATE'="" S KMPDCHK="3"_KMPDATE
E S KMPDCHK="ALL"
S KMPSUB="KMP"
F S KMPSUB=$O(^XTMP(KMPSUB)) Q:$E(KMPSUB,1,3)'="KMP" D
.S KMPDAY=$P(KMPSUB," ",2)
.Q:(KMPDCHK'=KMPDAY)&(KMPDCHK'="ALL")
.W "<H2>"_$P(^XTMP(KMPSUB,0),"^",3)_"</H2>"
.S KMPMTYP=0
.F S KMPMTYP=$O(^XTMP(KMPSUB,KMPMTYP)) Q:KMPMTYP="" D
..Q:(KMPMTYP'[KMPMCHK)&(KMPMCHK'="ALL")
..S KMPNODE=""
..F S KMPNODE=$O(^XTMP(KMPSUB,KMPMTYP,"HTTP",KMPNODE)) Q:KMPNODE="" D
...W "<H3>"_KMPMTYP_" : "_KMPNODE_"</H3>"
...S KMPT=""
...F S KMPT=$O(^XTMP(KMPSUB,KMPMTYP,"HTTP",KMPNODE,KMPT)) Q:KMPT="" D
....S KMPTIME=$ZT(KMPT)
....S KMPDATA=^XTMP(KMPSUB,KMPMTYP,"HTTP",KMPNODE,KMPT)
....W "<pre>"_KMPMTYP_" - "_KMPTIME_" - "_KMPDATA_"</pre>"
Q
;
GETCPFG() ;
N KMPF,KMPHLIST,KMPH,KMPHEAD,KMPARR,KMPI,KMPLIST,KMPHARR,KMPHONLY
D SITEARR^KMPUTLW(.KMPSITE)
W "<H1>Site</H1>"
S KMPF=""
F S KMPF=$O(KMPSITE(KMPF)) Q:KMPF="" D
.W KMPF_": "_$G(KMPSITE(KMPF))_"<BR>"
;
S KMPHLIST=%request.Get("HEADTYPE")
S KMPHONLY=+%request.Get("HEADONLY")
I KMPHLIST]"" D
.F KMPI=1:1:$L(KMPHLIST,":") D
..S KMPHARR($P(KMPHLIST,":",KMPI))=""
I KMPHLIST="" D CPFHARR(.KMPHARR)
S KMPHEAD=""
F S KMPHEAD=$O(KMPHARR(KMPHEAD)) Q:KMPHEAD="" D
.S KMPARR=##class(KMP.Utilities).getCPF(KMPHEAD)
.I KMPARR="" D Q
..W "<BR>"_KMPHEAD_"is not a valid CPF Section Header<BR>"
.W "<BR><TABLE>"
.W "<TH COLSPAN=2>"_KMPHEAD_"</TH>"
.Q:KMPHONLY
.F KMPI=1:1:KMPARR.Count() D
..S KMPLIST=KMPARR.GetAt(KMPI)
..W "<TR><TD>"_$LISTGET(KMPLIST,1)_"</TD><TD>"_$LISTGET(KMPLIST,2)_"</TR>"
.W "</TABLE>"
Q
;
CPFHARR(KMPLIST) ;
S KMPLIST("Cluster")="",KMPLIST("ComPorts")="",KMPLIST("ConfigFile")="",KMPLIST("Conversions")=""
S KMPLIST("Databases")="",KMPLIST("Debug")="",KMPLIST("DeviceSubTypes")="",KMPLIST("Devices")=""
S KMPLIST("ECP")="",KMPLIST("ECPServers")="",KMPLIST("Gateways")="",KMPLIST("IO")=""
S KMPLIST("Journal")="",KMPLIST("LicenseServers")="",KMPLIST("MagTapes")="",KMPLIST("MirrorMember")=""
S KMPLIST("Mirrors")="",KMPLIST("Miscellaneous")="",KMPLIST("Monitor")="",KMPLIST("Namespaces")=""
S KMPLIST("SQL")="",KMPLIST("Shadows")="",KMPLIST("SqlSysDatatypes")="",KMPLIST("SqlUserDatatypes")=""
S KMPLIST("Startup")="",KMPLIST("Telnet")="",KMPLIST("WorkQueues")="",KMPLIST("config")=""
Q
;
GETOPSG() ;
N KMPRTYP,KMPFROM,KMPTO,KMPREFRESH,KMPDAT
S KMPRTYP=%request.Get("RETTYPE")
S KMPFROM=%request.Get("FROMDATE")
S KMPTO=%request.Get("TODATE")
S KMPREFRESH=%request.Get("REFRESH")
I KMPRTYP="" S KMPRTYP="HTML"
I KMPRTYP="HTML" D GETWEBG^KMPOPSW(KMPFROM,KMPTO,KMPREFRESH)
I KMPRTYP'="HTML" D
.S KMPDAT=$$GETDATA^KMPOPS(KMPFROM,KMPTO)
.W KMPDAT.%ToJSON()
Q
;
GETRETRYG() ;
N KMPRET,KMPF,KMPMCHK,KMPI,KMPMKEY,KMPNODE,KMPDAY,HOROLOG,KMPJDAY,KMPJTIME,KMPDATA
S KMPRET=##class(%DynamicObject).%New()
D SITEARR^KMPUTLW(.KMPSITE)
W "<H1>Site</H1>"
S KMPF=""
F S KMPF=$O(KMPSITE(KMPF)) Q:KMPF="" D
.W KMPF_": "_$G(KMPSITE(KMPF))_"<BR>"
S KMPMCHK=%request.Get("MONTYPE")
I KMPMCHK="" W "<BR>Must specify a monitor type.</BR>" Q
I KMPMCHK="ALL" S KMPMCHK="VBEM:VCSM:VETM:VHLM:VMCM:VSTM:VTCM"
F KMPI=1:1:$L(KMPMCHK,":") D
.S KMPMKEY=$P(KMPMCHK,":",KMPI)
.W "<H3>Monitor:"_KMPMKEY_"</H3>"
.S KMPNODE=""
.F S KMPNODE=$O(^KMPTMP("KMPV",KMPMKEY,"RETRY",KMPNODE)) Q:KMPNODE="" D
..S KMPDAY=""
..F S KMPDAY=$O(^KMPTMP("KMPV",KMPMKEY,"RETRY",KMPNODE,KMPDAY)) Q:KMPDAY="" D
...S HOROLOG=""
...F S HOROLOG=$O(^KMPTMP("KMPV",KMPMKEY,"RETRY",KMPNODE,KMPDAY,HOROLOG)) Q:HOROLOG="" D
....S KMPJDAY=$ZD(KMPDAY)
....S KMPJTIME=$ZT($P(HOROLOG,",",2))
....S KMPDATA=KMPMKEY_"^"_KMPNODE_"^"_KMPJDAY_"^"_KMPJTIME
....W "<BR>Data:"_KMPDATA
Q
;
RUNLOGG() ;
N KMPDAYS,KMPF,KMPREF,KMPSREF,KMPMON,KMPP,KMPDATE,KMPIEN,KMPNODE,KMPRDAT,KMPRES,KMPMLIST,X,%H,%T
S KMPMLIST=%request.Get("MONTYPE")
S KMPDAYS=%request.Get("DAYS")
D SITEARR^KMPUTLW(.KMPSITE)
W "<H1>Site</H1>"
S KMPF=""
F S KMPF=$O(KMPSITE(KMPF)) Q:KMPF="" D
.W KMPF_": "_$G(KMPSITE(KMPF))_"<BR>"
I $G(KMPMLIST)="" S KMPMLIST="VBEM:VCSM:VETM:VHLM:VMCM:VSTM:VTCM"
S KMPDAYS=$G(KMPDAYS)
S KMPREF("VTCM")=3
S KMPREF("VSTM")=4
S KMPREF("VMCM")=5
S KMPREF("VBEM")=6
S KMPREF("VCSM")=7
S KMPREF("VETM")=8
S KMPREF("VHLM")=9
S KMPSREF=$S(KMPDAYS="":"",1:$H-KMPDAYS)
F KMPI=1:1:$L(KMPMLIST,":") D
.S KMPMON=$P(KMPMLIST,":",KMPI)
.S KMPP=$G(KMPREF(KMPMON))
.S KMPDATE=KMPSREF
.F S KMPDATE=$O(^KMPV(8969.03,"B",KMPDATE)) Q:KMPDATE="" D
..S KMPIEN=""
..F S KMPIEN=$O(^KMPV(8969.03,"B",KMPDATE,KMPIEN)) Q:KMPIEN="" D
...S KMPNODE=$P(^KMPV(8969.03,KMPIEN,0),"^",2)
...S KMPRDAT=$P(^KMPV(8969.03,KMPIEN,0),"^",KMPP)
...S KMPRES(KMPMON,KMPDATE,KMPNODE)=KMPRDAT
S KMPMON=""
F S KMPMON=$O(KMPRES(KMPMON)) Q:KMPMON="" D
.W "<BR><BR>"
.S KMPDATE=""
.F S KMPDATE=$O(KMPRES(KMPMON,KMPDATE)) Q:KMPDATE="" D
..S KMPNODE=""
..F S KMPNODE=$O(KMPRES(KMPMON,KMPDATE,KMPNODE)) Q:KMPNODE="" D
...S X=KMPRES(KMPMON,KMPDATE,KMPNODE),KMPRDAT=""
...I X]"" D
....D H^%DTC
....S KMPRDAT=$ZDATETIME(%H_","_%T)
...W "<BR>"_KMPMON_"  "_$ZD(KMPDATE)_"  "_KMPNODE_"  "_KMPRDAT
Q
;
KILLG() ;
N KMPRET,KMPF,KMPMCHK,KMPL,KMPI,KMPMTYP
S KMPRET=##class(%DynamicObject).%New()
D SITEARR^KMPUTLW(.KMPSITE)
W "<H1>Site</H1>"
S KMPF=""
F S KMPF=$O(KMPSITE(KMPF)) Q:KMPF="" D
.W KMPF_": "_$G(KMPSITE(KMPF))_"<BR>"
S KMPMCHK=%request.Get("MONTYPE")
S KMPMCHK=$REPLACE(KMPMCHK,"""","")
I KMPMCHK="" S KMPMCHK="VBEM:VCSM:VETM:VHLM:VMCM:VSTM:VTCM"
S KMPL=$L(KMPMCHK,":")
F KMPI=1:1:KMPL D
.S KMPMTYP=$P(KMPMCHK,":",KMPI)
.K ^KMPTMP("KMPV",KMPMTYP)
.W "<BR>Data deleted: ",KMPMTYP
.D STOPMON^KMPVCBG(KMPMTYP,1,0)
.W "<BR>Monitor stopped: ",KMPMTYP
Q
;
STARTMONG() ;
N KMPRET,KMPSITE,KMPF,KMPMCHK,KMPI,KMPQUIT,KMPMKEY,KMPROUT,KMPTASK
S KMPRET=##class(%DynamicObject).%New()
D SITEARR^KMPUTLW(.KMPSITE)
W "<H1>Site</H1>"
S KMPF=""
F S KMPF=$O(KMPSITE(KMPF)) Q:KMPF="" D
.W KMPF_": "_$G(KMPSITE(KMPF))_"<BR>"
S KMPMCHK=%request.Get("MONTYPE")
I KMPMCHK="" D Q
.W "<BR>Must specify a monitor, list of monitors delimited by colons, or ALL"
I KMPMCHK="ALL" S KMPMCHK="VBEM:VCSM:VETM:VHLM:VMCM:VSTM:VTCM"
F KMPI=1:1:$L(KMPMCHK,":") D
.S KMPQUIT=0
.S KMPMKEY=$P(KMPMCHK,":",KMPI)
.W "<H3>"_KMPMKEY_"</H3>"
.I '$D(^KMPV(8969,"B",KMPMKEY)) D
..W " "_KMPMKEY_" not a valid monitor"
..S KMPQUIT=1
.S KMPROUT=$$GETVAL^KMPVCCFG(KMPMKEY,"CACHE DAILY TASK",8969)
.I KMPROUT="" D
..W " "_KMPMKEY_" has no run routine"
..S KMPQUIT=1
.I $$ROUTCHK^KMPVCBG(KMPROUT)=1 D
..W " "_KMPMKEY_" already running"
..S KMPQUIT=1
.I KMPQUIT=0 D
..D STARTMON^KMPVCBG(KMPMKEY,1,1)
..S KMPTASK="RUN^"_KMPROUT J @KMPTASK
..W !," "_KMPMKEY_" Started"
Q
;
STOPMONG() ;
N KMPRET,KMPF,KMPMCHK,KMPI,KMPQUIT,KMPMKEY
S KMPRET=##class(%DynamicObject).%New()
D SITEARR^KMPUTLW(.KMPSITE)
W "<H1>Site</H1>"
S KMPF=""
F S KMPF=$O(KMPSITE(KMPF)) Q:KMPF="" D
.W KMPF_": "_$G(KMPSITE(KMPF))_"<BR>"
S KMPMCHK=%request.Get("MONTYPE")
I KMPMCHK="" D Q
.W "<BR>Must specify a monitor, list of monitors delimited by colons, or ALL"
I KMPMCHK="ALL" S KMPMCHK="VBEM:VCSM:VETM:VHLM:VMCM:VSTM:VTCM"
F KMPI=1:1:$L(KMPMCHK,":") D
.S KMPQUIT=0
.S KMPMKEY=$P(KMPMCHK,":",KMPI)
.W "<H3>"_KMPMKEY_"</H3>"
.I '$D(^KMPV(8969,"B",KMPMKEY)) D Q:KMPQUIT
..W " "_KMPMKEY_" not a valid monitor"
..S KMPQUIT=1
.D STOPMON^KMPVCBG(KMPMKEY,1,1)
.W !," "_KMPMKEY_" Stopped"
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HKMPURG1 10110 printed Apr 22, 2026@13:39:04 Page 2
KMPURG1 ;SP/JML - VSM GET REST functions ;7/1/2025
+1 ;;4.0;CAPACITY MANAGEMENT;**5**;3/1/2018;Build 9
+2 ;
+3 ;
+4 ;
CONFIGG() ;
+1 NEW KMPRET,KMPSITE,KMPCPF,KMPMON,KMPF,KMPMKEY,KMPGROUP,KMPMG
+2 ;
+3 SET KMPRET=##class(%DynamicObject).%New()
+4 DO SITEARR^KMPUTLW(.KMPSITE)
+5 DO CPFARR^KMPUTLW(.KMPCPF)
+6 DO MONARR^KMPUTLW(.KMPMON)
+7 SET KMPMG=""
+8 IF $$EXIST^%R("R1XUMSAR.int",$ZDEFNSP)
Begin DoDot:1
+9 DO GETSENDTO^R1XUMSAR(.KMPMG)
End DoDot:1
+10 WRITE "<H1>Site</H1>"
+11 SET KMPF=""
+12 FOR
SET KMPF=$ORDER(KMPSITE(KMPF))
if KMPF=""
QUIT
Begin DoDot:1
+13 WRITE KMPF_": "_$GET(KMPSITE(KMPF))_"<BR>"
End DoDot:1
+14 WRITE "<H1>CPF</H1>"
+15 WRITE "<H2>CPF Startup</H2>"
+16 SET KMPF=""
+17 FOR
SET KMPF=$ORDER(KMPCPF("Startup",KMPF))
if KMPF=""
QUIT
Begin DoDot:1
+18 WRITE KMPF_": "_KMPCPF("Startup",KMPF)_"<BR>"
End DoDot:1
+19 WRITE "<H2>CPF Mirror</H2>"
+20 SET KMPF=""
+21 FOR
SET KMPF=$ORDER(KMPCPF("MirrorMember",KMPF))
if KMPF=""
QUIT
Begin DoDot:1
+22 WRITE KMPF_": "_KMPCPF("MirrorMember",KMPF)_"<BR>"
End DoDot:1
+23 WRITE "<H2>CPF Config</H2>"
+24 SET KMPF=""
+25 FOR
SET KMPF=$ORDER(KMPCPF("config",KMPF))
if KMPF=""
QUIT
Begin DoDot:1
+26 WRITE KMPF_": "_KMPCPF("config",KMPF)_"<BR>"
End DoDot:1
+27 WRITE "<H1>Monitors</H1>"
+28 SET KMPMKEY=""
+29 FOR
SET KMPMKEY=$ORDER(KMPMON(KMPMKEY))
if KMPMKEY=""
QUIT
Begin DoDot:1
+30 WRITE "<H3>"_KMPMKEY_"</H3>"
+31 SET KMPF=""
+32 FOR
SET KMPF=$ORDER(KMPMON(KMPMKEY,KMPF))
if KMPF=""
QUIT
Begin DoDot:2
+33 WRITE KMPF_": "_KMPMON(KMPMKEY,KMPF)_"<BR>"
End DoDot:2
End DoDot:1
+34 SET KMPGROUP=""
+35 WRITE "<H3>Local Support Email</H3>"
+36 FOR
SET KMPGROUP=$ORDER(KMPMG(KMPGROUP))
if KMPGROUP=""
QUIT
Begin DoDot:1
+37 WRITE KMPGROUP_"<BR>"
End DoDot:1
+38 QUIT
+39 ;
GLOBUFFG() ;
+1 NEW KMPSITE,KMPF,KMPRNS,KMPTBUFF,KMPBUFF,KMPI,KMPL
+2 DO SITEARR^KMPUTLW(.KMPSITE)
+3 WRITE "<H1>Site</H1>"
+4 SET KMPF=""
+5 FOR
SET KMPF=$ORDER(KMPSITE(KMPF))
if KMPF=""
QUIT
Begin DoDot:1
+6 WRITE KMPF_": "_$GET(KMPSITE(KMPF))_"<BR>"
End DoDot:1
+7 WRITE "<H2>Global Buffers</H2>"
+8 SET KMPTBUFF=##class(KMP.Utilities).getTotalBuffers()
+9 WRITE "<TABLE width='50%'>"
+10 WRITE "<TR><TD>Total Buffers: "_KMPTBUFF_"</TD><TD></TD><TD></TD></TR>"
+11 WRITE "<TR><TD> </TD><TD></TD><TD></TD></TR>"
+12 WRITE "<TR><TH>Global</TH><TH>Database</TH><TH>Percentage</TH></TR>"
+13 SET KMPBUFF=##class(KMP.Utilities).getBuffers()
+14 FOR KMPI=1:1:KMPBUFF.Count()
Begin DoDot:1
+15 SET KMPL=KMPBUFF.GetAt(KMPI)
+16
*** ERROR ***