Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: ZOSVKSD

ZOSVKSD.m

Go to the documentation of this file.
  1. %ZOSVKSD ;OAK/KAK/RAK/JML - ZOSVKSD - Calculate Disk Capacity ;10/1/2020
  1. ;;8.0;KERNEL;**121,197,268,456,568,670,740**;3/1/2018;Build 6
  1. ;
  1. ; This routine will help to calculate disk capacity for
  1. ; Cache system platforms by looking up volume set table information
  1. ;
  1. EN(SITENUM,SESSNUM,OS) ;-- called by routine SYS+2^KMPSLK
  1. ;--------------------------------------------------------------------
  1. ; SITENUM = Station number of site
  1. ; SESSNUM = SAGG session number
  1. ; VOLS = Array containing names of monitored volumes
  1. ; OS = Type of M platform (CVMS, CWINNT)
  1. ;
  1. ; Returns ^XTMP("KMPS",SITENUM,SESSNUM,"@VOL",vol_name) = vol_size
  1. ;--------------------------------------------------------------------
  1. ;
  1. Q:'$G(SITENUM)
  1. Q:$G(SESSNUM)=""
  1. Q:$G(OS)=""
  1. ;
  1. D ALLOS
  1. ;
  1. Q
  1. ;
  1. ALLOS ; Using InterSystems APIs. Designed to work on all OS's
  1. N KMPRNS,KMPSARR,KMPSDIR,KMPSRNS,KMPSTNS,KMPSPTR
  1. ;
  1. ; KMPS*2.0*1 -- now monitoring all volume sets
  1. ;
  1. S KMPSDIR="",KMPSARR=""
  1. S KMPRNS=$NAMESPACE,$NAMESPACE="%SYS"
  1. F S KMPSDIR=$O(^SYS("UCI",KMPSDIR)) Q:KMPSDIR="" D
  1. .Q:$G(^SYS("UCI",KMPSDIR))]""
  1. .; get TOTAL BLOCKS for directory
  1. .S KMPSPTR=##class(SYS.Database).%OpenId(KMPSDIR)
  1. .; quit if not mounted
  1. .Q:KMPSPTR.Mounted'=1
  1. .;
  1. .S KMPSARR("KMPS",SITENUM,SESSNUM,"@VOL",KMPSDIR)=KMPSPTR.Blocks
  1. S $NAMESPACE=KMPRNS
  1. S KMPSDIR=""
  1. F S KMPSDIR=$O(KMPSARR("KMPS",SITENUM,SESSNUM,"@VOL",KMPSDIR)) Q:KMPSDIR="" D
  1. .S ^XTMP("KMPS",SITENUM,SESSNUM,"@VOL",KMPSDIR)=KMPSARR("KMPS",SITENUM,SESSNUM,"@VOL",KMPSDIR)
  1. Q
  1. ;
  1. KMPVVSTM(KMPVDATA) ; Get storage metrics for Vista Storage Monitor (VSTM) within VistA System Monitor (VSM)
  1. N KMPRNS,KMPVTNS,KMPVDIR,KMPVDB,KMPVMAX,KMPVSIZE,KMPVBSIZ,KMPVBPM,KMPVSTAT,KMPVFMB
  1. N KMPVFBLK,KMPVSYSD,KMPVESIZ,KMPVFLAG,KMPVRSET,KMPVDFSP
  1. N KMPDBERR,KMPVLN,KMPVTEXT
  1. S U="^"
  1. ; get current namespace, switch to %SYS
  1. S KMPRNS=$NAMESPACE,$NAMESPACE="%SYS"
  1. S KMPVDIR=""
  1. S KMPVTNS=$ZU(5,"%SYS")
  1. F S KMPVDIR=$O(^SYS("UCI",KMPVDIR)) Q:KMPVDIR="" D
  1. .Q:$G(^SYS("UCI",KMPVDIR))]""
  1. .S KMPVDB=##class(SYS.Database).%OpenId(KMPVDIR)
  1. .I KMPVDB="" S KMPDBERR(KMPVDIR)="" Q
  1. .S KMPVMAX=KMPVDB.MaxSize,KMPVSIZE=KMPVDB.Size
  1. .S KMPVBSIZ=KMPVDB.BlockSize,KMPVBPM=KMPVDB.BlocksPerMap
  1. .S KMPVSTAT=KMPVDB.GetFreeSpace(KMPVDIR,.KMPVFMB,.KMPVFBLK)
  1. .S KMPVSYSD=KMPVDB.IsSystemDB(KMPVDIR),KMPVESIZ=KMPVDB.ExpansionSize
  1. .; MaxSize(MB)^Current Size(MB)^Block Size(int)^Bocks per Map(int)^Free space(MB)^
  1. .; Free Space(int-Blocks)^System Dir(bool)^Expansion size
  1. .S KMPVDATA(KMPVDIR)=KMPVMAX_U_KMPVSIZE_U_KMPVBSIZ_U_KMPVBPM_U_KMPVFMB_U_KMPVFBLK_U_KMPVSYSD_U_KMPVESIZ
  1. ; Execute FreeSpace Query to add Directory Free Space
  1. S KMPVFLAG="*"
  1. S KMPVRSET=##class(%Library.ResultSet).%New("SYS.Database:FreeSpace")
  1. D KMPVRSET.Execute(KMPVFLAG,0)
  1. While (KMPVRSET.Next()) {
  1. I (KMPVRSET.Data("Available")["Dismounted") continue
  1. S KMPVDFSP=KMPVRSET.Data("DiskFreeSpace"),KMPVDIR=KMPVRSET.Data("Directory")
  1. I $D(KMPVDATA(KMPVDIR)) S $P(KMPVDATA(KMPVDIR),"^",9)=KMPVDFSP
  1. }
  1. D KMPVRSET.Close()
  1. ; Switch back to production namespace
  1. S $NAMESPACE=KMPRNS
  1. ; Send email if directory doesn't exist
  1. I $D(KMPDBERR) D
  1. .S KMPVTEXT("SUBJECT")="VSM CONFIG: Missing Directory"
  1. .S KMPVDIR="",KMPVLN=1
  1. .F S KMPVDIR=$O(KMPDBERR(KMPVDIR)) Q:KMPVDIR="" D
  1. ..S KMPVTEXT(KMPVLN)="Directory: "_KMPVDIR,KMPVLN=KMPVLN+1
  1. .D INFOMSG^KMPUTLW(.KMPVTEXT)
  1. Q
  1. ;
  1. KMPVVTCM(KMPVDATA) ; Get Cache metrics for Vista Timed Collection Monitor (VTCM) within VistA System Monitor (VSM)
  1. N U,KMPRNS,KMPVTNS
  1. S U="^"
  1. ; get current namespace, switch to %SYS
  1. S KMPRNS=$NAMESPACE,$NAMESPACE="%SYS"
  1. ;
  1. S KMPVDATA("KMPVDASH")=##class(SYS.Stats.Dashboard).Sample()
  1. S KMPVDATA("KMPVROUT")=##class(SYS.Stats.Routine).Sample()
  1. S KMPVDATA("KMPVSMH")=##class(%SYSTEM.Config.SharedMemoryHeap).GetUsageSummary()
  1. S KMPVDATA("KMPVMEM")=##class(%SYSTEM.Config.SharedMemoryHeap).FreeCount()
  1. ;
  1. ; Return to 'from' namespace
  1. S $NAMESPACE=KMPRNS
  1. Q
  1. ;
  1. BLKCOL(KMPVRET) ;
  1. ; ** Non interactive subset of Intersystems' ^BLKCOL routine - includes parts of BLKCOL and RUNERR line tags
  1. ;
  1. N KMPRNS,KMPVTNS,KMPVSEC,KMPVWAIT,KMPVDET,KMPVCOL,KMPVTO,KMPVCNT,KMPVINFO
  1. ; get current namespace, switch to %SYS
  1. S KMPRNS=$NAMESPACE,$NAMESPACE="%SYS"
  1. S KMPVSEC=10,KMPVWAIT=10,KMPVDET=2,KMPVRET=""
  1. ;
  1. S $ZTRAP="RUNERR"
  1. L +^SYS("BLKCOL"):5 E Q
  1. K ^||BLKCOL
  1. S KMPVCOL=0,KMPVTO=$ZH+KMPVSEC
  1. F KMPVCNT=1:1:1000 D
  1. .S KMPVINFO=$ZU(190,17)
  1. .I KMPVINFO]"" S KMPVCOL=KMPVCOL+1
  1. .H KMPVWAIT/1000
  1. S KMPVRET=KMPVCNT_","_KMPVCOL
  1. L -^SYS("BLKCOL")
  1. ; Return to 'from' namespace
  1. S $NAMESPACE=KMPRNS
  1. Q
  1. RUNERR ; Trap errors
  1. S $ZTRAP=""
  1. L -^SYS("BLKCOL")
  1. ; Return to 'from' namespace
  1. S $NAMESPACE=KMPRNS
  1. Q