├── .gitignore ├── Dockerfile ├── LICENSE ├── README.md ├── buildxDocker.sh ├── dist ├── afterParse │ ├── addCSINodeToNode.js │ ├── addEventRoot.js │ ├── addParentFnum.js │ ├── addVolumeAttachmentToCSI.js │ ├── buildAdditionalServerData.js │ ├── buildVolumeAttachmentInfo.js │ ├── clusterSummary.js │ ├── eventMessageGraphic.js │ ├── flipRepoFirst.js │ ├── hogsReport.js │ ├── processAfterParse.js │ ├── ripEndpointSlices.js │ ├── ripEndpoints.js │ ├── ripIPs.js │ ├── ripNetwork.js │ ├── ripNodes.js │ ├── ripPods.js │ ├── ripServiceInPods.js │ ├── ripServices.js │ ├── searchVpK.js │ ├── securityRelatedInfo.js │ ├── setEvtTimes.js │ └── sortByKey.js ├── filehandler │ ├── dirdate.js │ ├── formatdir.js │ ├── getclusterdir.js │ ├── makedir.js │ ├── processcomponents.js │ ├── processexplains.js │ ├── processreadyz.js │ ├── processversion.js │ ├── readconfig.js │ ├── readlicensefile.js │ ├── readresource.js │ ├── remdir.js │ └── saveconfigfile.js ├── fileio │ ├── buildIndexes.js │ ├── checkNetIno.js │ ├── fileio.js │ ├── loadresources.js │ ├── populate.js │ ├── processContainer.js │ ├── processYAML.js │ └── validYAML.js ├── help │ ├── buildDocs.js │ ├── fileProcessor.js │ └── helpers.js ├── kube │ ├── driver.js │ ├── getAPIs.js │ ├── getKubeInfo.js │ ├── kubeReadyZ.js │ ├── kubeStatus.js │ ├── kubeapis.js │ ├── kubeget.js │ ├── kubeversion.js │ ├── parseAPIs.js │ ├── parseStatus.js │ └── runCommand.js ├── labels │ ├── checkLabels.js │ └── checkMatchLabels.js ├── lib │ ├── appURLRoutes.js │ ├── buildStorage.js │ ├── checkAnnotations.js │ ├── checkOwnerReferences.js │ ├── clientIO.js │ ├── vpk.js │ ├── vpkReset.js │ └── vpkSpan.js ├── ownerRefs │ ├── chkUidChain.js │ ├── getChildUid.js │ └── getOwnerRefLinks.js ├── parsers │ ├── controllerRevision │ │ └── parseControllerRevision.js │ ├── crd │ │ └── parseCRD.js │ ├── csi │ │ └── parseCSI.js │ ├── endpointSlice │ │ └── parseEndpointSlice.js │ ├── endpoints │ │ └── parseEndpoints.js │ ├── events │ │ └── parseEvent.js │ ├── generic │ │ └── parseGeneric.js │ ├── hpa │ │ └── parseHPA.js │ ├── node │ │ └── parseNode.js │ ├── persistentVolume │ │ └── parsePersistentVolume.js │ ├── persistentVolumeClaim │ │ └── parsePersistentVolumeClaim.js │ ├── role │ │ └── parseRole.js │ ├── roleBinding │ │ └── parseRoleBinding.js │ ├── secret │ │ └── parseSecret.js │ ├── service │ │ └── parseService.js │ ├── serviceAccount │ │ └── parseServiceAccount.js │ ├── storageClass │ │ └── parseStorageClass.js │ ├── time │ │ └── parseTimes.js │ ├── volume │ │ └── parseVolume.js │ ├── volumeAttachments │ │ └── parseVolumeAttachment.js │ ├── volumeClaimTemplate │ │ └── parseVolumeClaimTemplate.js │ └── workloads │ │ ├── addToVolumeCounts.js │ │ ├── containerImages.js │ │ ├── getMounts.js │ │ ├── getVolumes.js │ │ ├── handleJobWorkload.js │ │ ├── handleOtherWorkloads.js │ │ ├── handlePodWorkload.js │ │ ├── parse.js │ │ ├── parseWorkload.js │ │ ├── parseWorkloadContainers.js │ │ ├── saveEnvironments.js │ │ ├── saveImageInfo.js │ │ ├── savePorts.js │ │ └── saveResources.js ├── schematic │ ├── data │ │ ├── checkEvents.js │ │ ├── checkType.js │ │ ├── checkUsage.js │ │ ├── clusterLevel.js │ │ ├── namespaceLevel.js │ │ ├── parseSchematic.js │ │ ├── populateBaseContainer.js │ │ ├── populateContainer.js │ │ ├── populateControllerRevision.js │ │ ├── populateDaemonSetPods.js │ │ ├── populateEndpointSlice.js │ │ ├── populateEndpoints.js │ │ ├── populateHPA.js │ │ ├── populateNetwork.js │ │ ├── populateOwnerChain.js │ │ ├── populatePodsToShow.js │ │ ├── populateServiceAccountSecrets.js │ │ ├── populateServices.js │ │ ├── populateStorage.js │ │ └── schematicParse.js │ └── html │ │ ├── bldEvents.js │ │ ├── buildCSVG.js │ │ ├── buildContainerStatus.js │ │ ├── buildNoPods.js │ │ ├── buildSvgInfo.js │ │ ├── buildTipContent.js │ │ ├── checkImage.js │ │ ├── formatDate.js │ │ ├── formatJSON.js │ │ ├── getRequestedData.js │ │ ├── nsChange.js │ │ ├── processF.js │ │ ├── schematicHtml.js │ │ ├── svgConfig.js │ │ ├── svgGenerators.js │ │ ├── svgHeader.js │ │ ├── svgIAM.js │ │ ├── svgNetwork.js │ │ ├── svgPVC.js │ │ └── svgPod.js ├── search │ ├── buildReturn.js │ ├── checkEntireResource.js │ ├── checkKeyValue.js │ ├── checkNsOrKind.js │ ├── parseValueFilter.js │ ├── processSearch.js │ ├── processSelected.js │ ├── reduceKV.js │ └── search.js ├── security │ ├── buildResourceHierarchy.js │ ├── buildsubjectHierarchy.js │ ├── createResourceHierarchy.js │ ├── createSubjectHierarchy.js │ ├── filterViewData.js │ └── getSecurityViewData.js ├── server │ ├── public │ │ ├── ace │ │ │ ├── ace.js │ │ │ ├── css │ │ │ │ ├── ace.css │ │ │ │ ├── chrome-1.png │ │ │ │ ├── chrome-2.png │ │ │ │ ├── merbivore-1.png │ │ │ │ ├── merbivore-2.png │ │ │ │ └── theme │ │ │ │ │ ├── chrome.css │ │ │ │ │ └── merbivore.css │ │ │ ├── ext-command_bar.js │ │ │ ├── ext-keybinding_menu.js │ │ │ ├── ext-options.js │ │ │ ├── ext-searchbox.js │ │ │ ├── ext-split.js │ │ │ ├── ext-textarea.js │ │ │ ├── keybinding-emacs.js │ │ │ ├── keybinding-sublime.js │ │ │ ├── keybinding-vim.js │ │ │ ├── keybinding-vscode.js │ │ │ ├── mode-yaml.js │ │ │ ├── theme-chrome.js │ │ │ ├── theme-merbivore.js │ │ │ └── worker-yaml.js │ │ ├── docs │ │ │ ├── cluster.md │ │ │ ├── containerimages.md │ │ │ ├── docimages │ │ │ │ ├── about.png │ │ │ │ ├── config.png │ │ │ │ ├── config_action.png │ │ │ │ ├── config_cluster.png │ │ │ │ ├── config_confirm.png │ │ │ │ ├── help_close_config.png │ │ │ │ ├── help_toc.png │ │ │ │ ├── overview_container.png │ │ │ │ ├── overview_local.png │ │ │ │ ├── resource.png │ │ │ │ ├── resource_dark.png │ │ │ │ ├── resource_light.png │ │ │ │ ├── snapshot_DropDown.png │ │ │ │ ├── snapshot_Name.png │ │ │ │ ├── snapshot_dropdown_container.png │ │ │ │ ├── snapshot_previous.png │ │ │ │ ├── snapshot_ssh_parms.png │ │ │ │ ├── splash_log.png │ │ │ │ ├── splash_vpk_2.png │ │ │ │ ├── tab_cluster.png │ │ │ │ ├── tab_cluster_drill_down1.png │ │ │ │ ├── tab_cluster_drill_down2.png │ │ │ │ ├── tab_cluster_drill_down3.png │ │ │ │ ├── tab_cluster_drill_down4.png │ │ │ │ ├── tab_cluster_legend.png │ │ │ │ ├── tab_cluster_report.png │ │ │ │ ├── tab_cluster_timelapse.png │ │ │ │ ├── tab_cluster_timelapse_controls.png │ │ │ │ ├── tab_cluster_timelapse_detail.png │ │ │ │ ├── tab_container_images_graph.png │ │ │ │ ├── tab_container_images_legend.png │ │ │ │ ├── tab_container_images_table.png │ │ │ │ ├── tab_event_msgs.png │ │ │ │ ├── tab_event_msgs_action.png │ │ │ │ ├── tab_event_msgs_graph.png │ │ │ │ ├── tab_event_msgs_table.png │ │ │ │ ├── tab_event_msgs_timeline.png │ │ │ │ ├── tab_network_filter.png │ │ │ │ ├── tab_network_nodes.png │ │ │ │ ├── tab_network_nodes_detail.png │ │ │ │ ├── tab_network_nodes_detail2.png │ │ │ │ ├── tab_network_services.png │ │ │ │ ├── tab_ownerref.png │ │ │ │ ├── tab_ownerref2.png │ │ │ │ ├── tab_ownerref_filter.png │ │ │ │ ├── tab_ownerref_filter_results.png │ │ │ │ ├── tab_search.png │ │ │ │ ├── tab_search_table.png │ │ │ │ ├── tab_security.png │ │ │ │ ├── tab_security2.png │ │ │ │ ├── tab_security_filter.png │ │ │ │ ├── tab_security_legend.png │ │ │ │ ├── tab_stats_reportView.png │ │ │ │ ├── tab_stats_treeMap.png │ │ │ │ ├── tab_storage.png │ │ │ │ ├── tab_storage_by_namespace.png │ │ │ │ ├── tab_storage_by_node.png │ │ │ │ ├── tab_storage_by_type.png │ │ │ │ ├── tab_workloadschematics.png │ │ │ │ ├── tab_workloadschematics_decode.png │ │ │ │ ├── tab_workloadschematics_filter.png │ │ │ │ ├── tab_workloadschematics_namespace.png │ │ │ │ ├── tab_workloadschematics_resources.png │ │ │ │ ├── tab_workloadschematics_rollover.png │ │ │ │ ├── tab_workloadschematics_source.png │ │ │ │ ├── ui_no_data.png │ │ │ │ ├── ui_shutdown_complete.png │ │ │ │ ├── ui_shutdown_confirm.png │ │ │ │ ├── ui_startup.png │ │ │ │ ├── ui_top.png │ │ │ │ └── vpk.png │ │ │ ├── eventmsgs.md │ │ │ ├── helpcloseconfig.md │ │ │ ├── installing.md │ │ │ ├── introduction.md │ │ │ ├── network.md │ │ │ ├── ownerref.md │ │ │ ├── schematics.md │ │ │ ├── search.md │ │ │ ├── security.md │ │ │ ├── snapshots.md │ │ │ ├── stats.md │ │ │ ├── storage.md │ │ │ ├── toc.md │ │ │ └── ui.md │ │ ├── images │ │ │ ├── 3d │ │ │ │ ├── 3d-3rdParty-Plane.png │ │ │ │ ├── 3d-csi.png │ │ │ │ ├── 3d-docker-container-init.png │ │ │ │ ├── 3d-docker-container.png │ │ │ │ ├── 3d-docker-image.png │ │ │ │ ├── 3d-ep.png │ │ │ │ ├── 3d-ingress.png │ │ │ │ ├── 3d-kubelet.png │ │ │ │ ├── 3d-mstNode.png │ │ │ │ ├── 3d-podBlue.png │ │ │ │ ├── 3d-podGreen.png │ │ │ │ ├── 3d-podGrey.png │ │ │ │ ├── 3d-podMagenta.png │ │ │ │ ├── 3d-podRed.png │ │ │ │ ├── 3d-podYellow.png │ │ │ │ ├── 3d-pv.png │ │ │ │ ├── 3d-pvc.png │ │ │ │ ├── 3d-repository.png │ │ │ │ ├── 3d-sc.png │ │ │ │ ├── 3d-svc.png │ │ │ │ ├── 3d-volume.png │ │ │ │ └── 3d-wrkNode.png │ │ │ ├── clouds.jpg │ │ │ ├── imagesLegendGraph.png │ │ │ ├── imagesLegendTable.png │ │ │ ├── k8 │ │ │ │ ├── api.svg │ │ │ │ ├── c-c-m.svg │ │ │ │ ├── c-m.svg │ │ │ │ ├── c-rev-orig.svg │ │ │ │ ├── c-rev.svg │ │ │ │ ├── c-role.svg │ │ │ │ ├── cert.svg │ │ │ │ ├── certReq.svg │ │ │ │ ├── certSignReq.svg │ │ │ │ ├── cm.svg │ │ │ │ ├── control-plane.svg │ │ │ │ ├── crb.svg │ │ │ │ ├── crd.svg │ │ │ │ ├── cronjob.svg │ │ │ │ ├── csidriver.svg │ │ │ │ ├── csinode.svg │ │ │ │ ├── deploy.svg │ │ │ │ ├── ds.svg │ │ │ │ ├── ep.svg │ │ │ │ ├── eps.svg │ │ │ │ ├── etcd.svg │ │ │ │ ├── evt.svg │ │ │ │ ├── group.svg │ │ │ │ ├── hpa.svg │ │ │ │ ├── ing.svg │ │ │ │ ├── job.svg │ │ │ │ ├── k-proxy.svg │ │ │ │ ├── k8.svg │ │ │ │ ├── kubelet.svg │ │ │ │ ├── limits.svg │ │ │ │ ├── master.svg │ │ │ │ ├── netpol.svg │ │ │ │ ├── node.svg │ │ │ │ ├── ns.svg │ │ │ │ ├── pod.svg │ │ │ │ ├── psp.svg │ │ │ │ ├── pv.svg │ │ │ │ ├── pvc.svg │ │ │ │ ├── quota.svg │ │ │ │ ├── rb.svg │ │ │ │ ├── rc.svg │ │ │ │ ├── role.svg │ │ │ │ ├── rs.svg │ │ │ │ ├── sa.svg │ │ │ │ ├── sc.svg │ │ │ │ ├── sched.svg │ │ │ │ ├── secret.svg │ │ │ │ ├── security.svg │ │ │ │ ├── sts.svg │ │ │ │ ├── subjects.svg │ │ │ │ ├── svc.svg │ │ │ │ ├── user.svg │ │ │ │ ├── va.svg │ │ │ │ ├── vol.svg │ │ │ │ └── volumeattachment.svg │ │ │ ├── loading.gif │ │ │ ├── other │ │ │ │ ├── ceph.svg │ │ │ │ ├── coreDNS.svg │ │ │ │ ├── coreDNS2.svg │ │ │ │ ├── fluentd.svg │ │ │ │ ├── helm.svg │ │ │ │ ├── ibm.svg │ │ │ │ ├── ibmold.svg │ │ │ │ ├── kong.svg │ │ │ │ ├── launch-box.svg │ │ │ │ ├── ocp.svg │ │ │ │ ├── rancher.svg │ │ │ │ ├── redhat.svg │ │ │ │ ├── rook.svg │ │ │ │ ├── rook2.svg │ │ │ │ ├── unk.svg │ │ │ │ ├── uparrow.svg │ │ │ │ └── vpk.png │ │ │ ├── stars.jpg │ │ │ ├── vpk.png │ │ │ └── wow │ │ │ │ ├── pic-cluster.png │ │ │ │ ├── pic-containerimages.png │ │ │ │ ├── pic-eventmsgs.png │ │ │ │ ├── pic-network.png │ │ │ │ ├── pic-ownerref.png │ │ │ │ ├── pic-schematic.png │ │ │ │ ├── pic-searchview.png │ │ │ │ ├── pic-security.png │ │ │ │ ├── pic-stats.png │ │ │ │ └── pic-storage.png │ │ ├── javascript │ │ │ ├── 3rdparty │ │ │ │ ├── all.js │ │ │ │ ├── babylon.current.js │ │ │ │ ├── babylon.js │ │ │ │ ├── babylon.old.js │ │ │ │ ├── bootstrap-table.min.js │ │ │ │ ├── bootstrap-toggle.min.js │ │ │ │ ├── bootstrap.min.js │ │ │ │ ├── bootstrap.new.min.js │ │ │ │ ├── d3-graphviz.js │ │ │ │ ├── d3.v7.min.js │ │ │ │ ├── fontawesome-f62fcc73b5.js │ │ │ │ ├── graphviz.js │ │ │ │ ├── graphvizlib.wasm │ │ │ │ ├── index.js │ │ │ │ ├── jquery-3.4.1.min.js │ │ │ │ ├── jspdf.min.js │ │ │ │ ├── jspdf.plugin.autotable.js │ │ │ │ ├── popper.min.js │ │ │ │ ├── popper.orig.min.js │ │ │ │ ├── select2.min.4.1.0.js │ │ │ │ └── tableExport.min.js │ │ │ ├── extensions │ │ │ │ ├── export │ │ │ │ │ ├── bootstrap-table-export.js │ │ │ │ │ └── bootstrap-table-export.min.js │ │ │ │ └── print │ │ │ │ │ ├── bootstrap-table-print.js │ │ │ │ │ └── bootstrap-table-print.min.js │ │ │ ├── socket.io.js │ │ │ ├── vpk3dCluster.js │ │ │ ├── vpk3dCommon.js │ │ │ ├── vpk3dData.js │ │ │ ├── vpk3dFilter.js │ │ │ ├── vpk3dTimeLapse.js │ │ │ ├── vpkCommon.js │ │ │ ├── vpkEdit.js │ │ │ ├── vpkGetDefs.js │ │ │ ├── vpkGraphvizManager.js │ │ │ ├── vpkIconImage.js │ │ │ ├── vpkLoadSnapshot.js │ │ │ ├── vpkMain.js │ │ │ ├── vpkModalHandlers.js │ │ │ ├── vpkPrintDiv.js │ │ │ ├── vpkSelectLists.js │ │ │ ├── vpkTabCluster.js │ │ │ ├── vpkTabClusterRpt.js │ │ │ ├── vpkTabContainerImages.js │ │ │ ├── vpkTabEvtMsgs.js │ │ │ ├── vpkTabNetwork.js │ │ │ ├── vpkTabOwnerRef.js │ │ │ ├── vpkTabSchematics.js │ │ │ ├── vpkTabSearch.js │ │ │ ├── vpkTabSecurity.js │ │ │ ├── vpkTabStats.js │ │ │ ├── vpkTabStorage.js │ │ │ ├── vpkTipsInfo.js │ │ │ ├── vpkTopScreen.js │ │ │ └── vpkUsage.js │ │ ├── routes │ │ │ └── index.js │ │ ├── sounds │ │ │ ├── GunShot.wav │ │ │ └── LowDing.wav │ │ ├── stylesheets │ │ │ ├── all.min.css │ │ │ ├── all.min.orig.css │ │ │ ├── bootstrap-select.css │ │ │ ├── bootstrap-table.min.css │ │ │ ├── bootstrap-toggle.min.css │ │ │ ├── bootstrap.min.css │ │ │ ├── bootstrap.min.new.css │ │ │ ├── select2.min.4.1.0.css │ │ │ ├── vpk.css │ │ │ ├── vpk.orig.css │ │ │ └── vpk3D.css │ │ ├── textures │ │ │ ├── clouds_nx.jpg │ │ │ ├── clouds_ny.jpg │ │ │ ├── clouds_nz.jpg │ │ │ ├── clouds_px.jpg │ │ │ ├── clouds_py.jpg │ │ │ ├── clouds_pz.jpg │ │ │ ├── stars_nx.jpg │ │ │ ├── stars_ny.jpg │ │ │ ├── stars_nz.jpg │ │ │ ├── stars_px.jpg │ │ │ ├── stars_py.jpg │ │ │ └── stars_pz.jpg │ │ ├── views │ │ │ ├── index.ejs │ │ │ └── partials │ │ │ │ ├── README.md │ │ │ │ ├── banner.ejs │ │ │ │ ├── head.ejs │ │ │ │ ├── modal-about.ejs │ │ │ │ ├── modal-chgDir.ejs │ │ │ │ ├── modal-closeVpk.ejs │ │ │ │ ├── modal-cluster.ejs │ │ │ │ ├── modal-clusterLegend.ejs │ │ │ │ ├── modal-command.ejs │ │ │ │ ├── modal-config.ejs │ │ │ │ ├── modal-decode.ejs │ │ │ │ ├── modal-docs.ejs │ │ │ │ ├── modal-editor.ejs │ │ │ │ ├── modal-evtMsgs.ejs │ │ │ │ ├── modal-explain.ejs │ │ │ │ ├── modal-imagesLegend.ejs │ │ │ │ ├── modal-message.ejs │ │ │ │ ├── modal-multi.ejs │ │ │ │ ├── modal-networkFilter.ejs │ │ │ │ ├── modal-networkInfo.ejs │ │ │ │ ├── modal-ownerRefFilter.ejs │ │ │ │ ├── modal-schem.ejs │ │ │ │ ├── modal-schematicFilter.ejs │ │ │ │ ├── modal-search.ejs │ │ │ │ ├── modal-secInfo.ejs │ │ │ │ ├── modal-securityFilter.ejs │ │ │ │ ├── modal-securityLegend.ejs │ │ │ │ ├── modal-splashVpk.ejs │ │ │ │ ├── modal-timeLapse.ejs │ │ │ │ ├── modal-yaml.ejs │ │ │ │ ├── modal-yes-no.ejs │ │ │ │ ├── scripts.ejs │ │ │ │ ├── tab-cluster.ejs │ │ │ │ ├── tab-containerImages.ejs │ │ │ │ ├── tab-eventMsgs.ejs │ │ │ │ ├── tab-instructions.ejs │ │ │ │ ├── tab-network.ejs │ │ │ │ ├── tab-ownerRef.ejs │ │ │ │ ├── tab-schematic.ejs │ │ │ │ ├── tab-search.ejs │ │ │ │ ├── tab-security.ejs │ │ │ │ ├── tab-stats.ejs │ │ │ │ ├── tab-storage.ejs │ │ │ │ ├── tab-tabs.ejs │ │ │ │ ├── tab-views.ejs │ │ │ │ └── tooltip.ejs │ │ └── webfonts │ │ │ ├── fa-brands-400.eot │ │ │ ├── fa-brands-400.svg │ │ │ ├── fa-brands-400.ttf │ │ │ ├── fa-brands-400.woff │ │ │ ├── fa-brands-400.woff2 │ │ │ ├── fa-regular-400.eot │ │ │ ├── fa-regular-400.svg │ │ │ ├── fa-regular-400.ttf │ │ │ ├── fa-regular-400.woff │ │ │ ├── fa-regular-400.woff2 │ │ │ ├── fa-solid-900.eot │ │ │ ├── fa-solid-900.svg │ │ │ ├── fa-solid-900.ttf │ │ │ ├── fa-solid-900.woff │ │ │ └── fa-solid-900.woff2 │ └── server.js ├── snapshot │ ├── checkForOldData.js │ ├── getSnapshot.js │ ├── processDir.js │ ├── reloadSnapshot.js │ ├── removeOldFiles.js │ ├── returnData.js │ ├── saveK8sData.js │ ├── saveStatMsg.js │ └── stats.js ├── splash │ └── splash.js └── utils │ ├── calcsize.js │ ├── checkdefinednamespace.js │ ├── checkkind.js │ ├── checklabel.js │ ├── checktype.js │ ├── chgp2.js │ ├── cidnamelookup.js │ ├── containerlink.js │ ├── countresources.js │ ├── formatbytes.js │ ├── getptime.js │ ├── logging.js │ ├── redactsecret.js │ ├── resetvpkobject.js │ ├── showprops.js │ ├── showtimedif.js │ ├── sortjsonbykeys.js │ ├── spacecalc.js │ └── timediff.js ├── eslint.config.js ├── jsconfig.json ├── package.json ├── src ├── afterParse │ ├── addCSINodeToNode.ts │ ├── addEventRoot.ts │ ├── addParentFnum.ts │ ├── addVolumeAttachmentToCSI.ts │ ├── buildAdditionalServerData.ts │ ├── buildVolumeAttachmentInfo.ts │ ├── clusterSummary.ts │ ├── eventMessageGraphic.ts │ ├── flipRepoFirst.ts │ ├── hogsReport.ts │ ├── processAfterParse.ts │ ├── ripEndpointSlices.ts │ ├── ripEndpoints.ts │ ├── ripIPs.ts │ ├── ripNetwork.ts │ ├── ripNodes.ts │ ├── ripPods.ts │ ├── ripServiceInPods.ts │ ├── ripServices.ts │ ├── searchVpK.ts │ ├── securityRelatedInfo.ts │ ├── setEvtTimes.ts │ └── sortByKey.ts ├── filehandler │ ├── dirdate.ts │ ├── formatdir.ts │ ├── getclusterdir.ts │ ├── makedir.ts │ ├── processcomponents.ts │ ├── processexplains.ts │ ├── processreadyz.ts │ ├── processversion.ts │ ├── readconfig.ts │ ├── readlicensefile.ts │ ├── readresource.ts │ ├── remdir.ts │ └── saveconfigfile.ts ├── fileio │ ├── buildIndexes.ts │ ├── checkNetIno.ts │ ├── fileio.ts │ ├── loadresources.ts │ ├── populate.ts │ ├── processContainer.ts │ ├── processYAML.ts │ └── validYAML.ts ├── help │ ├── buildDocs.ts │ ├── fileProcessor.ts │ ├── helpers.ts │ └── index.ts ├── kube │ ├── driver.ts │ ├── getAPIs.ts │ ├── getKubeInfo.ts │ ├── kubeReadyZ.ts │ ├── kubeStatus.ts │ ├── kubeapis.ts │ ├── kubeget.ts │ ├── kubeversion.ts │ ├── parseAPIs.ts │ ├── parseStatus.ts │ └── runCommand.ts ├── labels │ ├── checkLabels.ts │ └── checkMatchLabels.ts ├── lib │ ├── appURLRoutes.ts │ ├── buildStorage.ts │ ├── checkAnnotations.ts │ ├── checkOwnerReferences.ts │ ├── clientIO.ts │ ├── vpk.ts │ ├── vpkReset.ts │ └── vpkSpan.ts ├── ownerRefs │ ├── chkUidChain.ts │ ├── getChildUid.ts │ └── getOwnerRefLinks.ts ├── parsers │ ├── binding │ │ └── parseBinding.ts │ ├── container │ │ └── parseContainer.ts │ ├── controllerRevision │ │ └── parseControllerRevision.ts │ ├── crd │ │ └── parseCRD.ts │ ├── csi │ │ └── parseCSI.ts │ ├── endpointSlice │ │ └── parseEndpointSlice.ts │ ├── endpoints │ │ └── parseEndpoints.ts │ ├── events │ │ └── parseEvent.ts │ ├── generic │ │ └── parseGeneric.ts │ ├── hpa │ │ └── parseHPA.ts │ ├── node │ │ └── parseNode.ts │ ├── nodeSelector │ │ └── parseNodeSelector.ts │ ├── persistentVolume │ │ └── parsePersistentVolume.ts │ ├── persistentVolumeClaim │ │ └── parsePersistentVolumeClaim.ts │ ├── role │ │ └── parseRole.ts │ ├── roleBinding │ │ ├── parseRoleBinding.ts │ │ └── parseRoleBinding2.ts │ ├── secret │ │ └── parseSecret.ts │ ├── service │ │ └── parseService.ts │ ├── serviceAccount │ │ └── parseServiceAccount.ts │ ├── storageClass │ │ └── parseStorageClass.ts │ ├── time │ │ └── parseTimes.ts │ ├── volume │ │ └── parseVolume.ts │ ├── volumeAttachments │ │ └── parseVolumeAttachment.ts │ ├── volumeClaimTemplate │ │ └── parseVolumeClaimTemplate.ts │ └── workloads │ │ ├── addToVolumeCounts.ts │ │ ├── containerImages.ts │ │ ├── getMounts.ts │ │ ├── getVolumes.ts │ │ ├── handleJobWorkload.ts │ │ ├── handleOtherWorkloads.ts │ │ ├── handlePodWorkload.ts │ │ ├── parse.ts │ │ ├── parseWorkload.ts │ │ ├── parseWorkloadContainers.ts │ │ ├── saveEnvironments.ts │ │ ├── saveImageInfo.ts │ │ ├── savePorts.ts │ │ ├── saveResources.ts │ │ └── sharedData.ts ├── schematic │ ├── data │ │ ├── checkEvents.ts │ │ ├── checkType.ts │ │ ├── checkUsage.ts │ │ ├── clusterLevel.ts │ │ ├── namespaceLevel.ts │ │ ├── parseSchematic.ts │ │ ├── populateBaseContainer.ts │ │ ├── populateContainer.ts │ │ ├── populateControllerRevision.ts │ │ ├── populateDaemonSetPods.ts │ │ ├── populateEndpointSlice.ts │ │ ├── populateEndpoints.ts │ │ ├── populateHPA.ts │ │ ├── populateNetwork.ts │ │ ├── populateOwnerChain.ts │ │ ├── populatePodsToShow.ts │ │ ├── populateServiceAccountSecrets.ts │ │ ├── populateServices.ts │ │ ├── populateStorage.ts │ │ └── schematicParse.ts │ └── html │ │ ├── bldEvents.ts │ │ ├── buildCSVG.ts │ │ ├── buildContainerStatus.ts │ │ ├── buildNoPods.ts │ │ ├── buildSvgInfo.ts │ │ ├── buildTipContent.ts │ │ ├── checkImage.ts │ │ ├── formatDate.ts │ │ ├── formatJSON.ts │ │ ├── getRequestedData.ts │ │ ├── nsChange.ts │ │ ├── processF.ts │ │ ├── schematicHtml.ts │ │ ├── svgConfig.ts │ │ ├── svgGenerators.ts │ │ ├── svgHeader.ts │ │ ├── svgIAM.ts │ │ ├── svgNetwork.ts │ │ ├── svgPVC.ts │ │ └── svgPod.ts ├── search │ ├── buildReturn.ts │ ├── checkEntireResource.ts │ ├── checkKeyValue.ts │ ├── checkNsOrKind.ts │ ├── parseValueFilter.ts │ ├── processSearch.ts │ ├── processSelected.ts │ ├── reduceKV.ts │ └── search.ts ├── security │ ├── buildResourceHierarchy.ts │ ├── buildSubjectHierarchy.ts │ ├── createResourceHierarchy.ts │ ├── createSubjectHierarchy.ts │ ├── filterSecurityRules.ts │ ├── filterViewData.ts │ ├── getSecurityRules.ts │ └── getSecurityViewData.ts ├── server │ ├── public │ │ ├── ace │ │ │ ├── ace.js │ │ │ ├── css │ │ │ │ ├── ace.css │ │ │ │ ├── chrome-1.png │ │ │ │ ├── chrome-2.png │ │ │ │ ├── merbivore-1.png │ │ │ │ ├── merbivore-2.png │ │ │ │ └── theme │ │ │ │ │ ├── chrome.css │ │ │ │ │ └── merbivore.css │ │ │ ├── ext-command_bar.js │ │ │ ├── ext-keybinding_menu.js │ │ │ ├── ext-options.js │ │ │ ├── ext-searchbox.js │ │ │ ├── ext-split.js │ │ │ ├── ext-textarea.js │ │ │ ├── keybinding-emacs.js │ │ │ ├── keybinding-sublime.js │ │ │ ├── keybinding-vim.js │ │ │ ├── keybinding-vscode.js │ │ │ ├── mode-yaml.js │ │ │ ├── theme-chrome.js │ │ │ ├── theme-merbivore.js │ │ │ └── worker-yaml.js │ │ ├── docs │ │ │ ├── cluster.md │ │ │ ├── containerimages.md │ │ │ ├── docimages │ │ │ │ ├── about.png │ │ │ │ ├── config.png │ │ │ │ ├── config_action.png │ │ │ │ ├── config_cluster.png │ │ │ │ ├── config_confirm.png │ │ │ │ ├── help_close_config.png │ │ │ │ ├── help_toc.png │ │ │ │ ├── overview_container.png │ │ │ │ ├── overview_local.png │ │ │ │ ├── resource.png │ │ │ │ ├── resource_dark.png │ │ │ │ ├── resource_light.png │ │ │ │ ├── snapshot_DropDown.png │ │ │ │ ├── snapshot_Name.png │ │ │ │ ├── snapshot_dropdown_container.png │ │ │ │ ├── snapshot_previous.png │ │ │ │ ├── snapshot_ssh_parms.png │ │ │ │ ├── splash_log.png │ │ │ │ ├── splash_vpk_2.png │ │ │ │ ├── tab_cluster.png │ │ │ │ ├── tab_cluster_drill_down1.png │ │ │ │ ├── tab_cluster_drill_down2.png │ │ │ │ ├── tab_cluster_drill_down3.png │ │ │ │ ├── tab_cluster_drill_down4.png │ │ │ │ ├── tab_cluster_legend.png │ │ │ │ ├── tab_cluster_report.png │ │ │ │ ├── tab_cluster_timelapse.png │ │ │ │ ├── tab_cluster_timelapse_controls.png │ │ │ │ ├── tab_cluster_timelapse_detail.png │ │ │ │ ├── tab_container_images_graph.png │ │ │ │ ├── tab_container_images_legend.png │ │ │ │ ├── tab_container_images_table.png │ │ │ │ ├── tab_event_msgs.png │ │ │ │ ├── tab_event_msgs_action.png │ │ │ │ ├── tab_event_msgs_graph.png │ │ │ │ ├── tab_event_msgs_table.png │ │ │ │ ├── tab_event_msgs_timeline.png │ │ │ │ ├── tab_network_filter.png │ │ │ │ ├── tab_network_nodes.png │ │ │ │ ├── tab_network_nodes_detail.png │ │ │ │ ├── tab_network_nodes_detail2.png │ │ │ │ ├── tab_network_services.png │ │ │ │ ├── tab_ownerref.png │ │ │ │ ├── tab_ownerref2.png │ │ │ │ ├── tab_ownerref_filter.png │ │ │ │ ├── tab_ownerref_filter_results.png │ │ │ │ ├── tab_search.png │ │ │ │ ├── tab_search_table.png │ │ │ │ ├── tab_security.png │ │ │ │ ├── tab_security2.png │ │ │ │ ├── tab_security_filter.png │ │ │ │ ├── tab_security_legend.png │ │ │ │ ├── tab_stats_reportView.png │ │ │ │ ├── tab_stats_treeMap.png │ │ │ │ ├── tab_storage.png │ │ │ │ ├── tab_storage_by_namespace.png │ │ │ │ ├── tab_storage_by_node.png │ │ │ │ ├── tab_storage_by_type.png │ │ │ │ ├── tab_workloadschematics.png │ │ │ │ ├── tab_workloadschematics_decode.png │ │ │ │ ├── tab_workloadschematics_filter.png │ │ │ │ ├── tab_workloadschematics_namespace.png │ │ │ │ ├── tab_workloadschematics_resources.png │ │ │ │ ├── tab_workloadschematics_rollover.png │ │ │ │ ├── tab_workloadschematics_source.png │ │ │ │ ├── ui_no_data.png │ │ │ │ ├── ui_shutdown_complete.png │ │ │ │ ├── ui_shutdown_confirm.png │ │ │ │ ├── ui_startup.png │ │ │ │ ├── ui_top.png │ │ │ │ └── vpk.png │ │ │ ├── eventmsgs.md │ │ │ ├── helpcloseconfig.md │ │ │ ├── installing.md │ │ │ ├── introduction.md │ │ │ ├── network.md │ │ │ ├── ownerref.md │ │ │ ├── schematics.md │ │ │ ├── search.md │ │ │ ├── security.md │ │ │ ├── snapshots.md │ │ │ ├── stats.md │ │ │ ├── storage.md │ │ │ ├── toc.md │ │ │ └── ui.md │ │ ├── images │ │ │ ├── 3d │ │ │ │ ├── 3d-3rdParty-Plane.png │ │ │ │ ├── 3d-csi.png │ │ │ │ ├── 3d-docker-container-init.png │ │ │ │ ├── 3d-docker-container.png │ │ │ │ ├── 3d-docker-image.png │ │ │ │ ├── 3d-ep.png │ │ │ │ ├── 3d-ingress.png │ │ │ │ ├── 3d-kubelet.png │ │ │ │ ├── 3d-mstNode.png │ │ │ │ ├── 3d-podBlue.png │ │ │ │ ├── 3d-podGreen.png │ │ │ │ ├── 3d-podGrey.png │ │ │ │ ├── 3d-podMagenta.png │ │ │ │ ├── 3d-podRed.png │ │ │ │ ├── 3d-podYellow.png │ │ │ │ ├── 3d-pv.png │ │ │ │ ├── 3d-pvc.png │ │ │ │ ├── 3d-repository.png │ │ │ │ ├── 3d-sc.png │ │ │ │ ├── 3d-svc.png │ │ │ │ ├── 3d-volume.png │ │ │ │ └── 3d-wrkNode.png │ │ │ ├── clouds.jpg │ │ │ ├── imagesLegendGraph.png │ │ │ ├── imagesLegendTable.png │ │ │ ├── k8 │ │ │ │ ├── api.svg │ │ │ │ ├── c-c-m.svg │ │ │ │ ├── c-m.svg │ │ │ │ ├── c-rev-orig.svg │ │ │ │ ├── c-rev.svg │ │ │ │ ├── c-role.svg │ │ │ │ ├── cert.svg │ │ │ │ ├── certReq.svg │ │ │ │ ├── certSignReq.svg │ │ │ │ ├── cm.svg │ │ │ │ ├── control-plane.svg │ │ │ │ ├── crb.svg │ │ │ │ ├── crd.svg │ │ │ │ ├── cronjob.svg │ │ │ │ ├── csidriver.svg │ │ │ │ ├── csinode.svg │ │ │ │ ├── deploy.svg │ │ │ │ ├── ds.svg │ │ │ │ ├── ep.svg │ │ │ │ ├── eps.svg │ │ │ │ ├── etcd.svg │ │ │ │ ├── evt.svg │ │ │ │ ├── group.svg │ │ │ │ ├── hpa.svg │ │ │ │ ├── ing.svg │ │ │ │ ├── job.svg │ │ │ │ ├── k-proxy.svg │ │ │ │ ├── k8.svg │ │ │ │ ├── kubelet.svg │ │ │ │ ├── limits.svg │ │ │ │ ├── master.svg │ │ │ │ ├── netpol.svg │ │ │ │ ├── node.svg │ │ │ │ ├── ns.svg │ │ │ │ ├── pod.svg │ │ │ │ ├── psp.svg │ │ │ │ ├── pv.svg │ │ │ │ ├── pvc.svg │ │ │ │ ├── quota.svg │ │ │ │ ├── rb.svg │ │ │ │ ├── rc.svg │ │ │ │ ├── role.svg │ │ │ │ ├── rs.svg │ │ │ │ ├── sa.svg │ │ │ │ ├── sc.svg │ │ │ │ ├── sched.svg │ │ │ │ ├── secret.svg │ │ │ │ ├── security.svg │ │ │ │ ├── sts.svg │ │ │ │ ├── subjects.svg │ │ │ │ ├── svc.svg │ │ │ │ ├── user.svg │ │ │ │ ├── va.svg │ │ │ │ ├── vol.svg │ │ │ │ └── volumeattachment.svg │ │ │ ├── loading.gif │ │ │ ├── other │ │ │ │ ├── ceph.svg │ │ │ │ ├── coreDNS.svg │ │ │ │ ├── coreDNS2.svg │ │ │ │ ├── fluentd.svg │ │ │ │ ├── helm.svg │ │ │ │ ├── ibm.svg │ │ │ │ ├── ibmold.svg │ │ │ │ ├── kong.svg │ │ │ │ ├── launch-box.svg │ │ │ │ ├── ocp.svg │ │ │ │ ├── rancher.svg │ │ │ │ ├── redhat.svg │ │ │ │ ├── rook.svg │ │ │ │ ├── rook2.svg │ │ │ │ ├── unk.svg │ │ │ │ ├── uparrow.svg │ │ │ │ └── vpk.png │ │ │ ├── stars.jpg │ │ │ ├── vpk.png │ │ │ └── wow │ │ │ │ ├── pic-cluster.png │ │ │ │ ├── pic-containerimages.png │ │ │ │ ├── pic-eventmsgs.png │ │ │ │ ├── pic-network.png │ │ │ │ ├── pic-ownerref.png │ │ │ │ ├── pic-schematic.png │ │ │ │ ├── pic-searchview.png │ │ │ │ ├── pic-security.png │ │ │ │ ├── pic-stats.png │ │ │ │ └── pic-storage.png │ │ ├── javascript │ │ │ ├── 3rdparty │ │ │ │ ├── all.js │ │ │ │ ├── babylon.current.js │ │ │ │ ├── babylon.js │ │ │ │ ├── babylon.old.js │ │ │ │ ├── bootstrap-table.min.js │ │ │ │ ├── bootstrap-toggle.min.js │ │ │ │ ├── bootstrap.min.js │ │ │ │ ├── bootstrap.new.min.js │ │ │ │ ├── d3-graphviz.js │ │ │ │ ├── d3.v7.min.js │ │ │ │ ├── fontawesome-f62fcc73b5.js │ │ │ │ ├── graphviz.js │ │ │ │ ├── graphvizlib.wasm │ │ │ │ ├── index.js │ │ │ │ ├── jquery-3.4.1.min.js │ │ │ │ ├── jspdf.min.js │ │ │ │ ├── jspdf.plugin.autotable.js │ │ │ │ ├── popper.min.js │ │ │ │ ├── popper.orig.min.js │ │ │ │ ├── select2.min.4.1.0.js │ │ │ │ └── tableExport.min.js │ │ │ ├── extensions │ │ │ │ ├── export │ │ │ │ │ ├── bootstrap-table-export.js │ │ │ │ │ └── bootstrap-table-export.min.js │ │ │ │ └── print │ │ │ │ │ ├── bootstrap-table-print.js │ │ │ │ │ └── bootstrap-table-print.min.js │ │ │ ├── socket.io.js │ │ │ ├── vpk3dCluster.js │ │ │ ├── vpk3dCommon.js │ │ │ ├── vpk3dData.js │ │ │ ├── vpk3dFilter.js │ │ │ ├── vpk3dTimeLapse.js │ │ │ ├── vpkCommon.js │ │ │ ├── vpkEdit.js │ │ │ ├── vpkGetDefs.js │ │ │ ├── vpkGraphvizManager.js │ │ │ ├── vpkIconImage.js │ │ │ ├── vpkLoadSnapshot.js │ │ │ ├── vpkMain.js │ │ │ ├── vpkModalHandlers.js │ │ │ ├── vpkPrintDiv.js │ │ │ ├── vpkSelectLists.js │ │ │ ├── vpkTabCluster.js │ │ │ ├── vpkTabClusterRpt.js │ │ │ ├── vpkTabContainerImages.js │ │ │ ├── vpkTabEvtMsgs.js │ │ │ ├── vpkTabNetwork.js │ │ │ ├── vpkTabOwnerRef.js │ │ │ ├── vpkTabSchematics.js │ │ │ ├── vpkTabSearch.js │ │ │ ├── vpkTabSecurity.js │ │ │ ├── vpkTabStats.js │ │ │ ├── vpkTabStorage.js │ │ │ ├── vpkTipsInfo.js │ │ │ ├── vpkTopScreen.js │ │ │ └── vpkUsage.js │ │ ├── routes │ │ │ └── index.js │ │ ├── sounds │ │ │ ├── GunShot.wav │ │ │ └── LowDing.wav │ │ ├── stylesheets │ │ │ ├── all.min.css │ │ │ ├── all.min.orig.css │ │ │ ├── bootstrap-select.css │ │ │ ├── bootstrap-table.min.css │ │ │ ├── bootstrap-toggle.min.css │ │ │ ├── bootstrap.min.css │ │ │ ├── bootstrap.min.new.css │ │ │ ├── select2.min.4.1.0.css │ │ │ ├── vpk.css │ │ │ ├── vpk.orig.css │ │ │ └── vpk3D.css │ │ ├── textures │ │ │ ├── clouds_nx.jpg │ │ │ ├── clouds_ny.jpg │ │ │ ├── clouds_nz.jpg │ │ │ ├── clouds_px.jpg │ │ │ ├── clouds_py.jpg │ │ │ ├── clouds_pz.jpg │ │ │ ├── stars_nx.jpg │ │ │ ├── stars_ny.jpg │ │ │ ├── stars_nz.jpg │ │ │ ├── stars_px.jpg │ │ │ ├── stars_py.jpg │ │ │ └── stars_pz.jpg │ │ ├── views │ │ │ ├── index.ejs │ │ │ └── partials │ │ │ │ ├── README.md │ │ │ │ ├── banner.ejs │ │ │ │ ├── head.ejs │ │ │ │ ├── modal-about.ejs │ │ │ │ ├── modal-chgDir.ejs │ │ │ │ ├── modal-closeVpk.ejs │ │ │ │ ├── modal-cluster.ejs │ │ │ │ ├── modal-clusterLegend.ejs │ │ │ │ ├── modal-command.ejs │ │ │ │ ├── modal-config.ejs │ │ │ │ ├── modal-decode.ejs │ │ │ │ ├── modal-docs.ejs │ │ │ │ ├── modal-editor.ejs │ │ │ │ ├── modal-evtMsgs.ejs │ │ │ │ ├── modal-explain.ejs │ │ │ │ ├── modal-imagesLegend.ejs │ │ │ │ ├── modal-message.ejs │ │ │ │ ├── modal-multi.ejs │ │ │ │ ├── modal-networkFilter.ejs │ │ │ │ ├── modal-networkInfo.ejs │ │ │ │ ├── modal-ownerRefFilter.ejs │ │ │ │ ├── modal-schem.ejs │ │ │ │ ├── modal-schematicFilter.ejs │ │ │ │ ├── modal-search.ejs │ │ │ │ ├── modal-secInfo.ejs │ │ │ │ ├── modal-securityFilter.ejs │ │ │ │ ├── modal-securityLegend.ejs │ │ │ │ ├── modal-splashVpk.ejs │ │ │ │ ├── modal-timeLapse.ejs │ │ │ │ ├── modal-yaml.ejs │ │ │ │ ├── modal-yes-no.ejs │ │ │ │ ├── scripts.ejs │ │ │ │ ├── tab-cluster.ejs │ │ │ │ ├── tab-containerImages.ejs │ │ │ │ ├── tab-eventMsgs.ejs │ │ │ │ ├── tab-instructions.ejs │ │ │ │ ├── tab-network.ejs │ │ │ │ ├── tab-ownerRef.ejs │ │ │ │ ├── tab-schematic.ejs │ │ │ │ ├── tab-search.ejs │ │ │ │ ├── tab-security.ejs │ │ │ │ ├── tab-stats.ejs │ │ │ │ ├── tab-storage.ejs │ │ │ │ ├── tab-tabs.ejs │ │ │ │ ├── tab-views.ejs │ │ │ │ └── tooltip.ejs │ │ └── webfonts │ │ │ ├── fa-brands-400.eot │ │ │ ├── fa-brands-400.svg │ │ │ ├── fa-brands-400.ttf │ │ │ ├── fa-brands-400.woff │ │ │ ├── fa-brands-400.woff2 │ │ │ ├── fa-regular-400.eot │ │ │ ├── fa-regular-400.svg │ │ │ ├── fa-regular-400.ttf │ │ │ ├── fa-regular-400.woff │ │ │ ├── fa-regular-400.woff2 │ │ │ ├── fa-solid-900.eot │ │ │ ├── fa-solid-900.svg │ │ │ ├── fa-solid-900.ttf │ │ │ ├── fa-solid-900.woff │ │ │ └── fa-solid-900.woff2 │ └── server.ts ├── snapshot │ ├── checkForOldData.ts │ ├── getSnapshot.ts │ ├── processDir.ts │ ├── reloadSnapshot.ts │ ├── removeOldFiles.ts │ ├── returnData.ts │ ├── saveK8sData.ts │ ├── saveStatMsg.ts │ └── stats.ts ├── splash │ └── splash.ts └── utils │ ├── calcsize.ts │ ├── checkdefinednamespace.ts │ ├── checkkind.ts │ ├── checklabel.ts │ ├── checktype.ts │ ├── chgp2.ts │ ├── cidnamelookup.ts │ ├── containerlink.ts │ ├── countresources.ts │ ├── formatbytes.ts │ ├── getptime.ts │ ├── index.ts │ ├── logging.ts │ ├── redactsecret.ts │ ├── resetvpkobject.ts │ ├── showprops.ts │ ├── showtimedif.ts │ ├── sortjsonbykeys.ts │ ├── spacecalc.ts │ └── timediff.ts ├── tsconfig.json └── vpkconfig.json /.gitignore: -------------------------------------------------------------------------------- 1 | #==== Directories and Files to exclude ==== 2 | 3 | # VpK created runtime directories 4 | cluster/* 5 | usage/* 6 | 7 | #Developer files 8 | testing/* 9 | changes.txt 10 | githubInfo.txt 11 | 12 | # Node packages and other libs 13 | node_modules/* 14 | 15 | # Optional npm cache directory 16 | .npm 17 | 18 | # Optional REPL history 19 | .node_repl_history 20 | 21 | # VSCode 22 | .vscode/* 23 | 24 | # eslint 25 | .eslintrc.js 26 | 27 | # Logs 28 | logs 29 | *.log 30 | npm-debug.log* 31 | 32 | # node package 33 | package-lock.json 34 | 35 | # DS_Store 36 | .DS_Store 37 | public/.DS_Store 38 | public/docs/.DS_Store 39 | public/docs/docimages/.DS_Store 40 | public/images/.DS_Store 41 | results* 42 | 43 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2018-2025 Dave Weilert 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /dist/afterParse/buildAdditionalServerData.js: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // common routines 3 | //----------------------------------------------------------------------------- 4 | 'use strict'; 5 | import { schematicParse } from '../schematic/data/schematicParse.js'; 6 | import { schematicHtml } from '../schematic/html/schematicHtml.js'; 7 | import { buildStorage } from '../lib/buildStorage.js'; 8 | import { logMessage } from '../utils/logging.js'; 9 | export function buildAdditionalServerData(client) { 10 | try { 11 | logMessage('AFT005 - Building schematic information '); 12 | schematicParse(); 13 | schematicHtml(); 14 | buildStorage(); 15 | client.emit('getKStatus', { msg: 'Building schematic information, press "Close" button.' }); 16 | } 17 | catch (err) { 18 | logMessage('AFT006 - Error processing schematic, message: ' + err); 19 | logMessage('AFT006 - Stack: ' + err.stack); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /dist/afterParse/clusterSummary.js: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // common routines 3 | //----------------------------------------------------------------------------- 4 | 'use strict'; 5 | import vpk from '../lib/vpk.js'; 6 | export function clusterSummary() { 7 | vpk.clusterSummary = {}; 8 | vpk.clusterSummary['hogs'] = vpk.hogs; 9 | vpk.clusterSummary['nodes'] = vpk.nodesFnum; 10 | vpk.clusterSummary['stats'] = vpk.stats; 11 | vpk.clusterSummary['csiNode'] = vpk.csiNodeFnum; 12 | vpk.clusterSummary['csiDriver'] = vpk.csiDriverName; 13 | } 14 | -------------------------------------------------------------------------------- /dist/afterParse/flipRepoFirst.js: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // Flip the data to the fnum of the key and the repository for the data 3 | //----------------------------------------------------------------------------- 4 | 'use strict'; 5 | import vpk from '../lib/vpk.js'; 6 | import { logMessage } from '../utils/logging.js'; 7 | export function flipRepoFirst() { 8 | try { 9 | let keys = Object.keys(vpk.imageRepositoryFirst); 10 | let newD = {}; 11 | for (let i = 0; i < keys.length; i++) { 12 | if (typeof newD[vpk.imageRepositoryFirst[keys[i]]] === 'undefined') { 13 | newD[vpk.imageRepositoryFirst[keys[i]]] = []; 14 | } 15 | newD[vpk.imageRepositoryFirst[keys[i]]].push(keys[i]); 16 | } 17 | vpk.imageRepositoryFirst = newD; 18 | } 19 | catch (err) { 20 | logMessage('AFT267 - Error processing flipRepoFirst, message: ' + err); 21 | logMessage('AFT267 - Stack: ' + err.stack); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /dist/afterParse/ripIPs.js: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // ??? 3 | //----------------------------------------------------------------------------- 4 | 'use strict'; 5 | export function ripIPS(data) { 6 | let ipArray = {}; 7 | let base; 8 | for (let i = 0; i < data.length; i++) { 9 | base = data[i].substring(0, data[i].lastIndexOf('.')); 10 | if (typeof ipArray[base] === 'undefined') { 11 | ipArray[base] = 1; 12 | } 13 | else { 14 | ipArray[base] = ipArray[base] + 1; 15 | } 16 | } 17 | return ipArray; 18 | } 19 | -------------------------------------------------------------------------------- /dist/afterParse/sortByKey.js: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // Generic sorting function//----------------------------------------------------------------------------- 3 | 'use strict'; 4 | export function sortByKey(array, sortKey) { 5 | return array.sort((a, b) => { 6 | if (a[sortKey] < b[sortKey]) { 7 | return -1; 8 | } 9 | else if (a[sortKey] > b[sortKey]) { 10 | return 1; 11 | } 12 | else { 13 | return 0; 14 | } 15 | }); 16 | } 17 | -------------------------------------------------------------------------------- /dist/filehandler/dirdate.js: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // build date and time string 3 | //------------------------------------------------------------------------------ 4 | export function dirDate() { 5 | var dStr = new Date().toISOString(); 6 | var fp; 7 | fp = dStr.indexOf('T'); 8 | if (fp > -1) { 9 | dStr = dStr.substring(0, fp) + '-' + dStr.substring(fp + 1); 10 | } 11 | fp = dStr.indexOf(':'); 12 | if (fp > -1) { 13 | dStr = dStr.substring(0, fp) + 'h-' + dStr.substring(fp + 1); 14 | } 15 | fp = dStr.indexOf(':'); 16 | if (fp > -1) { 17 | dStr = dStr.substring(0, fp) + 'm-' + dStr.substring(fp + 1); 18 | } 19 | fp = dStr.indexOf('.'); 20 | if (fp > -1) { 21 | dStr = dStr.substring(0, fp) + 's'; 22 | } 23 | return dStr; 24 | } 25 | -------------------------------------------------------------------------------- /dist/filehandler/formatdir.js: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // format byte amount appending alpha category 3 | //------------------------------------------------------------------------------ 4 | export function formatDir(dir) { 5 | let os = process.platform; 6 | let nd = ''; 7 | let c = ''; 8 | if (os.startsWith('win')) { 9 | for (let i = 0; i < dir.length; i++) { 10 | c = dir.substring(i, i); 11 | if (c === '/') { 12 | nd = nd + '\\'; 13 | } 14 | else { 15 | nd = nd + c; 16 | } 17 | } 18 | } 19 | else { 20 | for (let i = 0; i < dir.length; i++) { 21 | c = dir.substring(i, i + 1); 22 | if (c === '\\') { 23 | nd = nd + '/'; 24 | } 25 | else { 26 | nd = nd + c; 27 | } 28 | } 29 | } 30 | return nd; 31 | } 32 | -------------------------------------------------------------------------------- /dist/filehandler/makedir.js: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // create a directory 3 | //----------------------------------------------------------------------------- 4 | import { logMessage } from '../utils/logging.js'; 5 | import fs from 'node:fs'; 6 | export function makedir(dir) { 7 | try { 8 | if (!fs.existsSync(dir)) { 9 | fs.mkdirSync(dir); 10 | logMessage(`FHL158 - Created directory: ${dir}`); 11 | } 12 | else { 13 | logMessage(`FHL159 - Directory: ${dir} exists`); 14 | } 15 | return 'PASS'; 16 | } 17 | catch (e) { 18 | logMessage(`FHL160 - Failed to create directory: ${dir} error message: ${e}`); 19 | return 'FAIL'; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /dist/filehandler/readlicensefile.js: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // read the license file and put content in memory var 3 | //----------------------------------------------------------------------------- 4 | import vpk from '../lib/vpk.js'; 5 | import { logMessage } from '../utils/logging.js'; 6 | import fs from 'node:fs'; 7 | export function readLicenseFile() { 8 | let base = process.cwd(); 9 | let fn = base + '/LICENSE'; 10 | let found = false; 11 | try { 12 | if (fs.existsSync(fn)) { 13 | found = true; 14 | } 15 | if (found) { 16 | let content = fs.readFileSync(fn); 17 | content = content.toString(); 18 | vpk.LICENSE = content; 19 | return; 20 | } 21 | else { 22 | vpk.LICENSE = 'Open source software, MIT license'; 23 | } 24 | } 25 | catch (err) { 26 | logMessage(`FHL834 - Failed to read LICENSE file, message: ${err}`); 27 | return 'Open source software, MIT license'; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /dist/filehandler/remdir.js: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // remove a directory 3 | //----------------------------------------------------------------------------- 4 | import { logMessage } from '../utils/logging.js'; 5 | import fs from 'node:fs'; 6 | export function remdir(dir) { 7 | try { 8 | // remove the directory if it already exists; 9 | if (fs.existsSync(dir)) { 10 | fs.unlinkSync(dir); 11 | } 12 | // create the directory 13 | fs.mkdirSync(dir); 14 | logMessage(`FHL164 - Creating directory: ${dir}`); 15 | } 16 | catch (err) { 17 | logMessage(`FHL155 - Unable to create snapshot directory: ${dir} error message: ${err}`); 18 | logMessage(`FHL155 - ${err.stack}`); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /dist/fileio/buildIndexes.js: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // create index entries in the global vpk 3 | //------------------------------------------------------------------------------ 4 | 'use strict'; 5 | import vpk from '../lib/vpk.js'; 6 | export function buildIndexes(fnum, kind, ns, name) { 7 | //console.log(typeof (fnum)) 8 | vpk.idxFnum[fnum] = { ns: ns, kind: kind, name: name }; 9 | if (typeof vpk.idxKind[kind] === 'undefined') { 10 | vpk.idxKind[kind] = []; 11 | } 12 | vpk.idxKind[kind].push(fnum); 13 | if (typeof vpk.idxNS[ns] === 'undefined') { 14 | vpk.idxNS[ns] = []; 15 | } 16 | vpk.idxNS[ns].push(fnum); 17 | if (typeof vpk.idxName[name] === 'undefined') { 18 | vpk.idxName[name] = []; 19 | } 20 | vpk.idxName[name].push(fnum); 21 | if (typeof vpk.idxFullName[ns + '.' + kind + '.' + name] === 'undefined') { 22 | vpk.idxFullName[ns + '.' + kind + '.' + name] = []; 23 | } 24 | vpk.idxFullName[ns + '.' + kind + '.' + name].push(fnum); 25 | } 26 | -------------------------------------------------------------------------------- /dist/fileio/processContainer.js: -------------------------------------------------------------------------------- 1 | // workload processing logic 2 | //------------------------------------------------------------------------------ 3 | // create index entries in the global vpk 4 | //------------------------------------------------------------------------------ 5 | 'use strict'; 6 | import vpk from '../lib/vpk.js'; 7 | import { workloadParser } from '../parsers/workloads/parse.js'; 8 | export function processContainer(y_ns, y_kind, y_name, fn, part, y_node, fnum, oRef, cStatus, statusPhase) { 9 | workloadParser(y_ns, y_kind, y_name, vpk.yaml, fnum, y_node, fn, oRef, cStatus, statusPhase); 10 | } 11 | -------------------------------------------------------------------------------- /dist/help/buildDocs.js: -------------------------------------------------------------------------------- 1 | // src/documentation/buildDocs.ts 2 | import vpk from '../lib/vpk.js'; 3 | import { logMessage } from '../utils/logging.js'; 4 | import { processFiles } from './fileProcessor.js'; 5 | //import * as fs from 'fs'; 6 | import fs from 'node:fs'; 7 | const cwd = process.cwd(); 8 | let docPath; 9 | /** 10 | * Initiates the documentation build process. 11 | */ 12 | export function buildDocumentation() { 13 | vpk.documentation = {}; 14 | const files = readDocsDirectory(); 15 | if (files !== '') { 16 | processFiles(files); 17 | } 18 | } 19 | /** 20 | * Reads the documentation directory and returns a list of files. 21 | */ 22 | function readDocsDirectory() { 23 | try { 24 | docPath = `${cwd}/dist/server/public/docs`; 25 | return fs.readdirSync(docPath); 26 | } 27 | catch (err) { 28 | logMessage(`DOC011 - Error getting file names in the documentation directory ${docPath}, message: ${err}`); 29 | return []; 30 | } 31 | } 32 | export { docPath }; 33 | -------------------------------------------------------------------------------- /dist/help/helpers.js: -------------------------------------------------------------------------------- 1 | // src/documentation/helpers.ts 2 | import vpk from '../lib/vpk.js'; 3 | let docCnt = 1000; 4 | /** 5 | * Formats the image path line to ensure it points to the correct directory. 6 | * @param line The markdown line containing an image. 7 | */ 8 | export function formatImagePath(line) { 9 | // Add your specific image path formatting logic here 10 | return line; 11 | } 12 | /** 13 | * Formats the topic key line and generates a unique topic key. 14 | * @param line The line containing the topic key. 15 | */ 16 | export function formatTopicKey(line) { 17 | let rtn = ''; 18 | const parts = line.split(' '); 19 | if (parts.length > 1 && parts[1] !== null && parts[1] !== 'undefined') { 20 | rtn = parts[1].substring(0, parts[1].length - 2); 21 | if (typeof vpk.documentation[rtn] !== 'undefined') { 22 | docCnt++; 23 | rtn = `${rtn}:${docCnt}`; 24 | } 25 | } 26 | else { 27 | docCnt++; 28 | rtn = `topic:${docCnt}`; 29 | } 30 | return rtn; 31 | } 32 | -------------------------------------------------------------------------------- /dist/kube/driver.js: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // Get the K8s resource type and emit message after processing 3 | //----------------------------------------------------------------------------- 4 | 'use strict'; 5 | import { getSnapshot } from '../snapshot/getSnapshot.js'; 6 | export async function driver(data, kga, client, dynDir) { 7 | await getSnapshot(data, kga, client, dynDir); 8 | } 9 | -------------------------------------------------------------------------------- /dist/kube/kubeversion.js: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // Issue command to get the cluster version 3 | //----------------------------------------------------------------------------- 4 | 'use strict'; 5 | import { logMessage } from '../utils/logging.js'; 6 | import { execSync } from 'child_process'; 7 | export function kubeversion(glbGet, glbSSH) { 8 | try { 9 | let cmd = ''; 10 | const getParts = glbGet.split(' '); 11 | cmd = getParts.length > 1 ? getParts[0] + ' version -o json' : glbGet + ' version -o json'; 12 | logMessage('KUB052 - ' + cmd); 13 | if (glbSSH !== '') { 14 | cmd = glbSSH + "'" + cmd + "'"; 15 | logMessage('KUB054 - Command modified to use SSH to call Host machine'); 16 | } 17 | const out = execSync(cmd).toString(); 18 | return JSON.parse(out); 19 | } 20 | catch (err) { 21 | logMessage('KUB053 - Error getting version information. message: ' + err); 22 | return { items: [], error: err }; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /dist/kube/runCommand.js: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // Issue command from UI 3 | //----------------------------------------------------------------------------- 4 | 'use strict'; 5 | import { execSync } from 'child_process'; 6 | import { logMessage } from '../utils/logging.js'; 7 | export function runCommand(cmd) { 8 | try { 9 | logMessage('KUB101 - Command to run: ' + cmd); 10 | const out = execSync(cmd).toString(); 11 | const result = out.length > 0 ? out.split('\n') : ['OK']; 12 | return { output: result, status: 'pass' }; 13 | } 14 | catch (err) { 15 | logMessage('KUB102 - Error from command, message: ' + err); 16 | const errorMsg = typeof err.message !== 'undefined' ? [err.message] : ['Command failed to run properly']; 17 | return { output: errorMsg, status: 'fail' }; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /dist/lib/buildStorage.js: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // ?? 3 | //----------------------------------------------------------------------------- 4 | import vpk from './vpk.js'; 5 | import { logMessage } from '../utils/logging.js'; 6 | export function buildStorage() { 7 | vpk.storageInfo = {}; 8 | try { 9 | vpk.storageInfo.StorageClass = vpk.storageClassName; 10 | vpk.storageInfo.PVinfo = vpk.pvFnum; 11 | vpk.storageInfo.PVCinfo = vpk.pvcFnum; 12 | vpk.storageInfo.CSIDriver = vpk.csiDriverName; 13 | vpk.storageInfo.CSINode = vpk.csiNodeFnum; 14 | vpk.storageInfo.SpaceReqSC = vpk.spaceReqSC; 15 | vpk.storageInfo.SpaceReqPVC = vpk.spaceReqPVC; 16 | return; 17 | } 18 | catch (err) { 19 | logMessage('STO001 - Error building storageInfo, message: ' + err); 20 | logMessage('STO001 - Stack: ' + err.stack); 21 | return ''; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /dist/lib/vpkSpan.js: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // VPK objects that are not reset when new snapshot is loaded. 3 | // These data varaibles need to 'span' the reset. 4 | //----------------------------------------------------------------------------- 5 | let vpkSpan = { 6 | readyz: {}, 7 | do_not_delete: 'do not delete', 8 | }; 9 | export default vpkSpan; 10 | -------------------------------------------------------------------------------- /dist/parsers/workloads/saveImageInfo.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Extracts volume information from the workload and updates relevant data structures. 3 | * @param c_name Container name 4 | * @param c_image Container image name 5 | * @param ctyoe Container type 6 | * @param fnum File number identifier 7 | */ 8 | import vpk from '../../lib/vpk.js'; 9 | export function saveImageInfo(c_name, c_image, ctype, fnum) { 10 | // save image data 11 | vpk.pods[fnum].containerNames.push({ 12 | c_name: c_name, 13 | c_image: c_image, 14 | }); 15 | // Update container type counts 16 | if (ctype === 'I') { 17 | vpk.pods[fnum].typeIcnt = vpk.pods[fnum].typeIcnt + 1; 18 | } 19 | else { 20 | vpk.pods[fnum].typeCcnt = vpk.pods[fnum].typeCcnt + 1; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /dist/parsers/workloads/savePorts.js: -------------------------------------------------------------------------------- 1 | import vpk from '../../lib/vpk.js'; 2 | import { containerLink } from '../../utils/containerlink.js'; 3 | export function savePorts(obj, e, fnum) { 4 | if (typeof obj[e].ports === 'undefined') { 5 | return; 6 | } 7 | for (let p = 0; p < obj[e].ports.length; p++) { 8 | if (typeof obj[e].ports[p].containerPort !== 'undefined') { 9 | containerLink(fnum, 'Ports', obj[e].ports[p].containerPort, '', obj[e].ports[p]); 10 | vpk.pods[fnum].ports.push(obj[e].ports[p].containerPort); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /dist/schematic/data/checkEvents.js: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // ??? 3 | //----------------------------------------------------------------------------- 4 | import vpk from '../../lib/vpk.js'; 5 | export function checkEvents(container) { 6 | let key = container.kind + '.' + container.namespace + '.' + container.name; 7 | let events = []; 8 | let hl = vpk.eventMessage.length; 9 | for (let e = 0; e < hl; e++) { 10 | if (vpk.eventMessage[e].key === key) { 11 | events.push(vpk.eventMessage[e]); 12 | vpk.eventMessage[e].used = true; 13 | continue; 14 | } 15 | if (vpk.eventMessage[e].involvedName === container.name) { 16 | events.push(vpk.eventMessage[e]); 17 | vpk.eventMessage[e].used = true; 18 | continue; 19 | } 20 | } 21 | container.Events = events; 22 | } 23 | -------------------------------------------------------------------------------- /dist/schematic/data/checkUsage.js: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // ??? 3 | //----------------------------------------------------------------------------- 4 | import { namespaceLevel } from './namespaceLevel.js'; 5 | import { clusterLevel } from './clusterLevel.js'; 6 | export function checkUsage(data, fnum) { 7 | if (data.kind === 'RoleBinding' || data.kind === 'Role') { 8 | return; 9 | } 10 | if (typeof data.namespace === 'undefined') { 11 | data.namespace = 'cluster-level'; 12 | } 13 | if (data.namespace === '' || data.namespace === 'cluster-level') { 14 | clusterLevel(data, data.kind, fnum); 15 | } 16 | else { 17 | namespaceLevel(data, data.kind, fnum); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /dist/schematic/data/populateBaseContainer.js: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // ??? 3 | //----------------------------------------------------------------------------- 4 | import vpk from '../../lib/vpk.js'; 5 | import { logMessage } from '../../utils/logging.js'; 6 | import { populateContainer } from './populateContainer.js'; 7 | import { checkUsage } from './checkUsage.js'; 8 | export function populateBaseContainer(data) { 9 | let e; 10 | let fnum; 11 | try { 12 | for (e = 0; e < data.length; e++) { 13 | fnum = data[e].fnum; 14 | checkUsage(data[e], fnum); 15 | if (typeof vpk.pods[fnum] !== 'undefined') { 16 | populateContainer(vpk.pods[fnum], fnum); 17 | } 18 | } 19 | } 20 | catch (err) { 21 | logMessage('SCM001 - Error processing schematic, fnum: ' + fnum + ' message: ' + err); 22 | logMessage('SCM101 - Stack: ' + err.stack); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /dist/schematic/data/populateContainer.js: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // ??? 3 | //----------------------------------------------------------------------------- 4 | import { checkEvents } from './checkEvents.js'; 5 | import { checkType } from './checkType.js'; 6 | export function populateContainer(container, fnum) { 7 | container = checkType(container, 'Secret', fnum); 8 | container = checkType(container, 'ConfigMap', fnum); 9 | container = checkType(container, 'PersistentVolumeClaim', fnum); 10 | container = checkType(container, 'ServiceAccount', fnum); 11 | container = checkEvents(container); 12 | } 13 | -------------------------------------------------------------------------------- /dist/schematic/data/populateDaemonSetPods.js: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // ??? 3 | //----------------------------------------------------------------------------- 4 | import vpk from '../../lib/vpk.js'; 5 | export function populateDaemonSetPods() { 6 | let keys = Object.keys(vpk.pods); 7 | let key; 8 | for (let k = 0; k < keys.length; k++) { 9 | key = keys[k]; 10 | if (!key.startsWith('0000')) { 11 | if (vpk.daemonSetPods.includes(key)) { 12 | vpk.pods[key].daemonSetPod = true; 13 | } 14 | else { 15 | vpk.pods[key].daemonSetPod = false; 16 | } 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /dist/schematic/data/populateNetwork.js: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // ??? 3 | //----------------------------------------------------------------------------- 4 | import { logMessage } from '../../utils/logging.js'; 5 | import { populateEndpoints } from './populateEndpoints.js'; 6 | import { populateEndpointSlice } from './populateEndpointSlice.js'; 7 | export function populateNetwork() { 8 | try { 9 | populateEndpoints(); 10 | populateEndpointSlice(); 11 | } 12 | catch (err) { 13 | logMessage('SCM005 - Error processing schematic, message: ' + err); 14 | logMessage('SCM105 - Stack: ' + err.stack); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /dist/schematic/data/populatePodsToShow.js: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // ??? 3 | //----------------------------------------------------------------------------- 4 | import vpk from '../../lib/vpk.js'; 5 | import { logMessage } from '../../utils/logging.js'; 6 | export function populatePodsToShow(podNS) { 7 | let ns; 8 | let key; 9 | try { 10 | for (let i = 0; i < podNS.length; i++) { 11 | ns = podNS[i]; 12 | key = '0000-' + ns; 13 | if (typeof vpk.pods[key].Pods === 'undefined') { 14 | vpk.pods[key].Pods = true; 15 | } 16 | } 17 | podNS = null; 18 | } 19 | catch (err) { 20 | logMessage('SCM830 - Error building container Pods flag, message: ' + err); 21 | logMessage(err.stack); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /dist/schematic/data/schematicParse.js: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // ??? 3 | //----------------------------------------------------------------------------- 4 | import { logMessage } from '../../utils/logging.js'; 5 | import { showTimeDiff } from '../../utils/showtimedif.js'; 6 | import { getPTime } from '../../utils/getptime.js'; 7 | import { parseSchematic } from './parseSchematic.js'; 8 | export function schematicParse() { 9 | let startT = getPTime(); 10 | logMessage('SCM001 - svgSchematic invoked'); 11 | parseSchematic(); 12 | let stopT = getPTime(); 13 | showTimeDiff(startT, stopT, 'svgSchematic.parseSchematic()'); 14 | return; 15 | } 16 | -------------------------------------------------------------------------------- /dist/schematic/html/buildSvgInfo.js: -------------------------------------------------------------------------------- 1 | import vpk from '../../lib/vpk.js'; 2 | import { buildTipContent } from './buildTipContent.js'; 3 | export function buildSvgInfo(data, fnum, type) { 4 | let id = fnum + '.' + type; 5 | let tName = type; 6 | if (typeof vpk.svgInfo[id] === 'undefined') { 7 | vpk.svgInfo[id] = []; 8 | } 9 | let content = buildTipContent(data, type, fnum); 10 | if (type === 'Phase') { 11 | tName = 'Pod Phase / IPs'; 12 | } 13 | if (type === 'CRD') { 14 | tName = 'CustomResourceDefinition'; 15 | } 16 | // check if an entry already exists, if so skip 17 | if (typeof vpk.svgInfo[id][0] === 'undefined') { 18 | vpk.svgInfo[id].push('' + 19 | tName + 20 | '
' + 21 | content + 22 | ''); 23 | } 24 | return id; 25 | } 26 | -------------------------------------------------------------------------------- /dist/schematic/html/formatDate.js: -------------------------------------------------------------------------------- 1 | export function formatDate(data) { 2 | if (typeof data === 'undefined' || data === null) { 3 | return 'Unknown date'; 4 | } 5 | let mydate = new Date(data); 6 | let fDate = mydate.toDateString(); 7 | let tPart = data.split('T'); 8 | if (typeof tPart[1] !== 'undefined') { 9 | fDate = fDate + ' ' + tPart[1]; 10 | if (fDate.endsWith('Z')) { 11 | fDate = fDate.substring(0, fDate.length - 1) + ' GMT'; 12 | } 13 | } 14 | return fDate; 15 | } 16 | -------------------------------------------------------------------------------- /dist/schematic/html/formatJSON.js: -------------------------------------------------------------------------------- 1 | export function formatJSON(content) { 2 | let cData = JSON.stringify(content, null, 2); 3 | cData = cData.split('\n'); 4 | let nLine = ''; 5 | let rtn = ''; 6 | let pttrn = /^\s*/; 7 | let spc = 0; 8 | for (let i = 0; i < cData.length; i++) { 9 | nLine = ''; 10 | spc = cData[i].match(pttrn)[0].length; 11 | if (spc > 0) { 12 | for (let s = 0; s < spc; s++) { 13 | nLine = nLine + ' '; 14 | } 15 | } 16 | rtn = rtn + nLine + cData[i].substring(spc) + '
'; 17 | } 18 | return rtn; 19 | } 20 | -------------------------------------------------------------------------------- /dist/schematic/html/getRequestedData.js: -------------------------------------------------------------------------------- 1 | import vpk from '../../lib/vpk.js'; 2 | export function getRequestedData(ns) { 3 | if (ns === ':all-namespaces:') { 4 | return vpk.schematicSVGs; 5 | } 6 | let keys = ns.split(':'); 7 | let rtn = {}; 8 | for (let i = 0; i < keys.length; i++) { 9 | if (keys[i] === '') { 10 | continue; 11 | } 12 | rtn[keys[i]] = vpk.schematicSVGs[keys[i]]; 13 | } 14 | return rtn; 15 | } 16 | -------------------------------------------------------------------------------- /dist/search/buildReturn.js: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // ?? 3 | //----------------------------------------------------------------------------- 4 | import { logMessage } from '../utils/logging.js'; 5 | export function buildReturn(fnumBase) { 6 | try { 7 | let keys = Object.keys(fnumBase); 8 | let key; 9 | let rtn = []; 10 | let item; 11 | let fn; 12 | for (let i = 0; i < keys.length; i++) { 13 | key = keys[i]; 14 | fn = fnumBase[key]; 15 | item = { 16 | namespace: fn.ns, 17 | kind: fn.kind, 18 | name: fn.name, 19 | fnum: key, 20 | }; 21 | rtn.push(item); 22 | } 23 | return rtn; 24 | } 25 | catch (err) { 26 | logMessage('SCH005 - Error processing, message: ' + err); 27 | logMessage('SCH005 - Stack: ' + err.stack); 28 | return []; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /dist/search/processSelected.js: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // ?? 3 | //----------------------------------------------------------------------------- 4 | export function processSelected(keep, fnumBase) { 5 | let keys = Object.keys(fnumBase); 6 | let key; 7 | for (let i = 0; i < keys.length; i++) { 8 | key = keys[i]; 9 | if (keep.includes(key)) { 10 | continue; 11 | } 12 | else { 13 | delete fnumBase[key]; 14 | } 15 | } 16 | return; 17 | } 18 | -------------------------------------------------------------------------------- /dist/search/reduceKV.js: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // ?? 3 | //----------------------------------------------------------------------------- 4 | export function reduceKV(keys, values) { 5 | let rtn = []; 6 | let key; 7 | for (key of keys) { 8 | if (values.includes(key)) { 9 | rtn.push(key); 10 | } 11 | } 12 | return rtn; 13 | } 14 | -------------------------------------------------------------------------------- /dist/security/buildResourceHierarchy.js: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // common routines 3 | //------------------------------------------------------------------------------ 4 | import { createResourceHierarchy } from './createResourceHierarchy.js'; 5 | export function buildResourceHierarchy() { 6 | return createResourceHierarchy(); 7 | } 8 | -------------------------------------------------------------------------------- /dist/security/buildsubjectHierarchy.js: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // common routines 3 | //------------------------------------------------------------------------------ 4 | import { createSubjectHierarchy } from './createSubjectHierarchy.js'; 5 | export function buildSubjectHierarchy() { 6 | return createSubjectHierarchy(); 7 | } 8 | -------------------------------------------------------------------------------- /dist/security/getSecurityViewData.js: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // common routines 3 | //------------------------------------------------------------------------------ 4 | import { filterViewData } from './filterViewData.js'; 5 | export function getSecurityViewData(parms) { 6 | return filterViewData(parms); 7 | } 8 | -------------------------------------------------------------------------------- /dist/server/public/ace/css/chrome-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/ace/css/chrome-1.png -------------------------------------------------------------------------------- /dist/server/public/ace/css/chrome-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/ace/css/chrome-2.png -------------------------------------------------------------------------------- /dist/server/public/ace/css/merbivore-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/ace/css/merbivore-1.png -------------------------------------------------------------------------------- /dist/server/public/ace/css/merbivore-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/ace/css/merbivore-2.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/about.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/about.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/config.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/config_action.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/config_action.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/config_cluster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/config_cluster.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/config_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/config_confirm.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/help_close_config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/help_close_config.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/help_toc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/help_toc.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/overview_container.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/overview_container.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/overview_local.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/overview_local.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/resource.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/resource.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/resource_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/resource_dark.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/resource_light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/resource_light.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/snapshot_DropDown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/snapshot_DropDown.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/snapshot_Name.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/snapshot_Name.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/snapshot_dropdown_container.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/snapshot_dropdown_container.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/snapshot_previous.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/snapshot_previous.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/snapshot_ssh_parms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/snapshot_ssh_parms.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/splash_log.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/splash_log.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/splash_vpk_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/splash_vpk_2.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/tab_cluster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/tab_cluster.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/tab_cluster_drill_down1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/tab_cluster_drill_down1.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/tab_cluster_drill_down2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/tab_cluster_drill_down2.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/tab_cluster_drill_down3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/tab_cluster_drill_down3.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/tab_cluster_drill_down4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/tab_cluster_drill_down4.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/tab_cluster_legend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/tab_cluster_legend.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/tab_cluster_report.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/tab_cluster_report.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/tab_cluster_timelapse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/tab_cluster_timelapse.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/tab_cluster_timelapse_controls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/tab_cluster_timelapse_controls.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/tab_cluster_timelapse_detail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/tab_cluster_timelapse_detail.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/tab_container_images_graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/tab_container_images_graph.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/tab_container_images_legend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/tab_container_images_legend.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/tab_container_images_table.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/tab_container_images_table.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/tab_event_msgs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/tab_event_msgs.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/tab_event_msgs_action.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/tab_event_msgs_action.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/tab_event_msgs_graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/tab_event_msgs_graph.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/tab_event_msgs_table.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/tab_event_msgs_table.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/tab_event_msgs_timeline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/tab_event_msgs_timeline.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/tab_network_filter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/tab_network_filter.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/tab_network_nodes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/tab_network_nodes.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/tab_network_nodes_detail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/tab_network_nodes_detail.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/tab_network_nodes_detail2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/tab_network_nodes_detail2.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/tab_network_services.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/tab_network_services.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/tab_ownerref.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/tab_ownerref.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/tab_ownerref2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/tab_ownerref2.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/tab_ownerref_filter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/tab_ownerref_filter.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/tab_ownerref_filter_results.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/tab_ownerref_filter_results.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/tab_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/tab_search.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/tab_search_table.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/tab_search_table.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/tab_security.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/tab_security.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/tab_security2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/tab_security2.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/tab_security_filter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/tab_security_filter.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/tab_security_legend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/tab_security_legend.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/tab_stats_reportView.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/tab_stats_reportView.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/tab_stats_treeMap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/tab_stats_treeMap.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/tab_storage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/tab_storage.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/tab_storage_by_namespace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/tab_storage_by_namespace.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/tab_storage_by_node.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/tab_storage_by_node.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/tab_storage_by_type.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/tab_storage_by_type.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/tab_workloadschematics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/tab_workloadschematics.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/tab_workloadschematics_decode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/tab_workloadschematics_decode.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/tab_workloadschematics_filter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/tab_workloadschematics_filter.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/tab_workloadschematics_namespace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/tab_workloadschematics_namespace.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/tab_workloadschematics_resources.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/tab_workloadschematics_resources.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/tab_workloadschematics_rollover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/tab_workloadschematics_rollover.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/tab_workloadschematics_source.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/tab_workloadschematics_source.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/ui_no_data.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/ui_no_data.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/ui_shutdown_complete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/ui_shutdown_complete.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/ui_shutdown_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/ui_shutdown_confirm.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/ui_startup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/ui_startup.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/ui_top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/ui_top.png -------------------------------------------------------------------------------- /dist/server/public/docs/docimages/vpk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/docs/docimages/vpk.png -------------------------------------------------------------------------------- /dist/server/public/images/3d/3d-3rdParty-Plane.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/images/3d/3d-3rdParty-Plane.png -------------------------------------------------------------------------------- /dist/server/public/images/3d/3d-csi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/images/3d/3d-csi.png -------------------------------------------------------------------------------- /dist/server/public/images/3d/3d-docker-container-init.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/images/3d/3d-docker-container-init.png -------------------------------------------------------------------------------- /dist/server/public/images/3d/3d-docker-container.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/images/3d/3d-docker-container.png -------------------------------------------------------------------------------- /dist/server/public/images/3d/3d-docker-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/images/3d/3d-docker-image.png -------------------------------------------------------------------------------- /dist/server/public/images/3d/3d-ep.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/images/3d/3d-ep.png -------------------------------------------------------------------------------- /dist/server/public/images/3d/3d-ingress.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/images/3d/3d-ingress.png -------------------------------------------------------------------------------- /dist/server/public/images/3d/3d-kubelet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/images/3d/3d-kubelet.png -------------------------------------------------------------------------------- /dist/server/public/images/3d/3d-mstNode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/images/3d/3d-mstNode.png -------------------------------------------------------------------------------- /dist/server/public/images/3d/3d-podBlue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/images/3d/3d-podBlue.png -------------------------------------------------------------------------------- /dist/server/public/images/3d/3d-podGreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/images/3d/3d-podGreen.png -------------------------------------------------------------------------------- /dist/server/public/images/3d/3d-podGrey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/images/3d/3d-podGrey.png -------------------------------------------------------------------------------- /dist/server/public/images/3d/3d-podMagenta.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/images/3d/3d-podMagenta.png -------------------------------------------------------------------------------- /dist/server/public/images/3d/3d-podRed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/images/3d/3d-podRed.png -------------------------------------------------------------------------------- /dist/server/public/images/3d/3d-podYellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/images/3d/3d-podYellow.png -------------------------------------------------------------------------------- /dist/server/public/images/3d/3d-pv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/images/3d/3d-pv.png -------------------------------------------------------------------------------- /dist/server/public/images/3d/3d-pvc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/images/3d/3d-pvc.png -------------------------------------------------------------------------------- /dist/server/public/images/3d/3d-repository.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/images/3d/3d-repository.png -------------------------------------------------------------------------------- /dist/server/public/images/3d/3d-sc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/images/3d/3d-sc.png -------------------------------------------------------------------------------- /dist/server/public/images/3d/3d-svc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/images/3d/3d-svc.png -------------------------------------------------------------------------------- /dist/server/public/images/3d/3d-volume.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/images/3d/3d-volume.png -------------------------------------------------------------------------------- /dist/server/public/images/3d/3d-wrkNode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/images/3d/3d-wrkNode.png -------------------------------------------------------------------------------- /dist/server/public/images/clouds.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/images/clouds.jpg -------------------------------------------------------------------------------- /dist/server/public/images/imagesLegendGraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/images/imagesLegendGraph.png -------------------------------------------------------------------------------- /dist/server/public/images/imagesLegendTable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/images/imagesLegendTable.png -------------------------------------------------------------------------------- /dist/server/public/images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/images/loading.gif -------------------------------------------------------------------------------- /dist/server/public/images/other/ibmold.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /dist/server/public/images/other/kong.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /dist/server/public/images/other/launch-box.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | launch 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /dist/server/public/images/other/ocp.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /dist/server/public/images/other/redhat.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /dist/server/public/images/other/uparrow.svg: -------------------------------------------------------------------------------- 1 | 2 | up-arrow 3 | 4 | -------------------------------------------------------------------------------- /dist/server/public/images/other/vpk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/images/other/vpk.png -------------------------------------------------------------------------------- /dist/server/public/images/stars.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/images/stars.jpg -------------------------------------------------------------------------------- /dist/server/public/images/vpk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/images/vpk.png -------------------------------------------------------------------------------- /dist/server/public/images/wow/pic-cluster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/images/wow/pic-cluster.png -------------------------------------------------------------------------------- /dist/server/public/images/wow/pic-containerimages.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/images/wow/pic-containerimages.png -------------------------------------------------------------------------------- /dist/server/public/images/wow/pic-eventmsgs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/images/wow/pic-eventmsgs.png -------------------------------------------------------------------------------- /dist/server/public/images/wow/pic-network.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/images/wow/pic-network.png -------------------------------------------------------------------------------- /dist/server/public/images/wow/pic-ownerref.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/images/wow/pic-ownerref.png -------------------------------------------------------------------------------- /dist/server/public/images/wow/pic-schematic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/images/wow/pic-schematic.png -------------------------------------------------------------------------------- /dist/server/public/images/wow/pic-searchview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/images/wow/pic-searchview.png -------------------------------------------------------------------------------- /dist/server/public/images/wow/pic-security.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/images/wow/pic-security.png -------------------------------------------------------------------------------- /dist/server/public/images/wow/pic-stats.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/images/wow/pic-stats.png -------------------------------------------------------------------------------- /dist/server/public/images/wow/pic-storage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/images/wow/pic-storage.png -------------------------------------------------------------------------------- /dist/server/public/javascript/3rdparty/graphvizlib.wasm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/javascript/3rdparty/graphvizlib.wasm -------------------------------------------------------------------------------- /dist/server/public/routes/index.js: -------------------------------------------------------------------------------- 1 | // const express = require('express'); 2 | // const router = express.Router(); 3 | // // Welcome Page 4 | // router.get('/', (req, res) => res.render('index')); 5 | // module.exports = router; 6 | import express from 'express'; 7 | const router = express.Router(); 8 | // Welcome Page 9 | router.get('/', (req, res) => res.render('index')); 10 | export default router; 11 | -------------------------------------------------------------------------------- /dist/server/public/sounds/GunShot.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/sounds/GunShot.wav -------------------------------------------------------------------------------- /dist/server/public/sounds/LowDing.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/sounds/LowDing.wav -------------------------------------------------------------------------------- /dist/server/public/textures/clouds_nx.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/textures/clouds_nx.jpg -------------------------------------------------------------------------------- /dist/server/public/textures/clouds_ny.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/textures/clouds_ny.jpg -------------------------------------------------------------------------------- /dist/server/public/textures/clouds_nz.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/textures/clouds_nz.jpg -------------------------------------------------------------------------------- /dist/server/public/textures/clouds_px.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/textures/clouds_px.jpg -------------------------------------------------------------------------------- /dist/server/public/textures/clouds_py.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/textures/clouds_py.jpg -------------------------------------------------------------------------------- /dist/server/public/textures/clouds_pz.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/textures/clouds_pz.jpg -------------------------------------------------------------------------------- /dist/server/public/textures/stars_nx.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/textures/stars_nx.jpg -------------------------------------------------------------------------------- /dist/server/public/textures/stars_ny.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/textures/stars_ny.jpg -------------------------------------------------------------------------------- /dist/server/public/textures/stars_nz.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/textures/stars_nz.jpg -------------------------------------------------------------------------------- /dist/server/public/textures/stars_px.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/textures/stars_px.jpg -------------------------------------------------------------------------------- /dist/server/public/textures/stars_py.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/textures/stars_py.jpg -------------------------------------------------------------------------------- /dist/server/public/textures/stars_pz.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/textures/stars_pz.jpg -------------------------------------------------------------------------------- /dist/server/public/views/partials/modal-decode.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /dist/server/public/views/partials/modal-docs.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /dist/server/public/views/partials/modal-editor.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /dist/server/public/views/partials/modal-evtMsgs.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /dist/server/public/views/partials/modal-message.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /dist/server/public/views/partials/modal-multi.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /dist/server/public/views/partials/modal-networkInfo.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /dist/server/public/views/partials/modal-schem.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /dist/server/public/views/partials/modal-secInfo.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /dist/server/public/views/partials/modal-timeLapse.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /dist/server/public/views/partials/modal-yaml.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /dist/server/public/views/partials/tab-network.ejs: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | 10 | 11 | Filter 12 |
-------------------------------------------------------------------------------- /dist/server/public/views/partials/tab-ownerRef.ejs: -------------------------------------------------------------------------------- 1 | 2 | 17 | -------------------------------------------------------------------------------- /dist/server/public/views/partials/tab-schematic.ejs: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 | 5 |
6 |
7 |
8 |
9 |
10 | 11 | 12 | Filter 13 | 14 |
-------------------------------------------------------------------------------- /dist/server/public/views/partials/tab-security.ejs: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 |
5 |
6 |
7 |
8 | 9 | Filter 10 |
-------------------------------------------------------------------------------- /dist/server/public/views/partials/tooltip.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
12 |
-------------------------------------------------------------------------------- /dist/server/public/webfonts/fa-brands-400.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/webfonts/fa-brands-400.eot -------------------------------------------------------------------------------- /dist/server/public/webfonts/fa-brands-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/webfonts/fa-brands-400.ttf -------------------------------------------------------------------------------- /dist/server/public/webfonts/fa-brands-400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/webfonts/fa-brands-400.woff -------------------------------------------------------------------------------- /dist/server/public/webfonts/fa-brands-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/webfonts/fa-brands-400.woff2 -------------------------------------------------------------------------------- /dist/server/public/webfonts/fa-regular-400.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/webfonts/fa-regular-400.eot -------------------------------------------------------------------------------- /dist/server/public/webfonts/fa-regular-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/webfonts/fa-regular-400.ttf -------------------------------------------------------------------------------- /dist/server/public/webfonts/fa-regular-400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/webfonts/fa-regular-400.woff -------------------------------------------------------------------------------- /dist/server/public/webfonts/fa-regular-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/webfonts/fa-regular-400.woff2 -------------------------------------------------------------------------------- /dist/server/public/webfonts/fa-solid-900.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/webfonts/fa-solid-900.eot -------------------------------------------------------------------------------- /dist/server/public/webfonts/fa-solid-900.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/webfonts/fa-solid-900.ttf -------------------------------------------------------------------------------- /dist/server/public/webfonts/fa-solid-900.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/webfonts/fa-solid-900.woff -------------------------------------------------------------------------------- /dist/server/public/webfonts/fa-solid-900.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/dist/server/public/webfonts/fa-solid-900.woff2 -------------------------------------------------------------------------------- /dist/snapshot/reloadSnapshot.js: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // Get data for request 3 | // kga (Kubernetes Get Array) 4 | //----------------------------------------------------------------------------- 5 | 'use strict'; 6 | import { logMessage } from '../utils/logging.js'; 7 | import { showTimeDiff } from '../utils/showtimedif.js'; 8 | import { getPTime } from '../utils/getptime.js'; 9 | import { processDir } from './processDir.js'; 10 | export function reloadSnapshot(dir, client) { 11 | let startT = getPTime(); 12 | logMessage(`SNP002 - snapshot reload invoked for: ${dir}`); 13 | processDir(dir, client); 14 | let stopT = getPTime(); 15 | showTimeDiff(startT, stopT, 'snapshot.reload()'); 16 | } 17 | -------------------------------------------------------------------------------- /dist/snapshot/returnData.js: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // ?? 3 | //----------------------------------------------------------------------------- 4 | 'use strict'; 5 | import vpk from '../lib/vpk.js'; 6 | import { saveK8sData } from './saveK8sData.js'; 7 | export function returnData(client, dynDir) { 8 | let rdata = {}; 9 | if (vpk.rtn === 'FAIL') { 10 | rdata.status = 'FAIL'; 11 | rdata.message = 'Failed to retrieve data, check log messages'; 12 | } 13 | else { 14 | rdata = saveK8sData(dynDir, client); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /dist/snapshot/saveStatMsg.js: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // save status message that occur during processing 3 | //----------------------------------------------------------------------------- 4 | 'use strict'; 5 | import { logMessage } from '../utils/logging.js'; 6 | export function saveStatMsg(msg, cnt, statMessages, dashline) { 7 | if (msg === 'dl') { 8 | logMessage(dashline); 9 | } 10 | else { 11 | if (cnt === 0) { 12 | return; 13 | } 14 | // 1234567890123456789012345678901234567890123456789012345678901234567890 15 | msg = msg + ' '; 16 | msg = msg.substring(0, 60); 17 | logMessage(msg + cnt); 18 | statMessages.push(msg + '::' + cnt); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /dist/utils/checkdefinednamespace.js: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // check if namespace is in array 3 | //----------------------------------------------------------------------------- 4 | import vpk from '../lib/vpk.js'; 5 | export function checkDefinedNamespace(ns) { 6 | // if this namespace does not exist add it 7 | if (typeof vpk.definedNamespaces[ns] === 'undefined') { 8 | vpk.definedNamespaces[ns] = ns; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /dist/utils/checkkind.js: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // check if kind/type is in array 3 | //----------------------------------------------------------------------------- 4 | import vpk from '../lib/vpk.js'; 5 | export function checkKind(kind) { 6 | // if this type of kind does not exist create one 7 | if (typeof vpk.kinds[kind] === 'undefined') { 8 | vpk.kinds[kind] = kind; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /dist/utils/checktype.js: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // check types 3 | //----------------------------------------------------------------------------- 4 | import vpk from '../lib/vpk.js'; 5 | export function checkType(kind, key) { 6 | if (typeof vpk[kind] === 'undefined') { 7 | vpk[kind] = []; 8 | if (vpk.kindList.includes[kind]) { 9 | // var nop = "" 10 | } 11 | else { 12 | vpk.kindList.push(kind); 13 | } 14 | } 15 | if (typeof key === 'number') { 16 | key = key.toString(); 17 | } 18 | if (key.length > 0) { 19 | // add key if not defined 20 | if (typeof vpk[kind][key] === 'undefined') { 21 | vpk[kind][key] = []; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /dist/utils/chgp2.js: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // change parameter to append a slash 3 | //------------------------------------------------------------------------------ 4 | export function chgP2(data) { 5 | let cp = data.lastIndexOf('@'); 6 | if (cp > -1) { 7 | return `${data.substring(0, cp)}/${data.substring(cp + 1)}`; 8 | } 9 | else { 10 | return data; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /dist/utils/formatbytes.js: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // Format byte amount appending alpha category 3 | //----------------------------------------------------------------------------- 4 | export const formatBytes = (bytesI, decimals = 2) => { 5 | if (bytesI === 0) { 6 | return '0 Bytes'; 7 | } 8 | const k = 1024; 9 | const dm = Math.max(0, decimals); // Use `Math.max` for clarity 10 | const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']; 11 | const i = Math.floor(Math.log(bytesI) / Math.log(k)); 12 | return `${sizes[i]} ${parseFloat((bytesI / Math.pow(k, i)).toFixed(dm))}`; 13 | }; 14 | -------------------------------------------------------------------------------- /dist/utils/getptime.js: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // Return current time 3 | //------------------------------------------------------------------------------ 4 | export function getPTime() { 5 | let now = new Date(); 6 | return now.getTime(); 7 | } 8 | -------------------------------------------------------------------------------- /dist/utils/logging.js: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // output message to console appending date and time 3 | //------------------------------------------------------------------------------ 4 | export function logMessage(msg) { 5 | console.log(`${new Date().toLocaleString()} :: ${msg}`); 6 | } 7 | -------------------------------------------------------------------------------- /dist/utils/redactsecret.js: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // redact the secret information 3 | //----------------------------------------------------------------------------- 4 | import vpk from '../lib/vpk.js'; 5 | export function redactSecret(data) { 6 | let keys; 7 | if (typeof data.data !== 'undefined') { 8 | keys = Object.keys(data.data); 9 | for (let i = 0; i < keys.length; i++) { 10 | data.data[keys[i]] = vpk.redactMsg; 11 | } 12 | } 13 | return data; 14 | } 15 | -------------------------------------------------------------------------------- /dist/utils/showprops.js: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // show object properties 3 | //------------------------------------------------------------------------------ 4 | export function showProps(obj, objName) { 5 | let result = ``; 6 | for (var i in obj) { 7 | // obj.hasOwnProperty() is used to filter out 8 | // properties from the object's prototype chain 9 | if (obj.hasOwnProperty(i)) { 10 | result += `${objName}.${i} = ${obj[i]}\n`; 11 | } 12 | } 13 | return result; 14 | } 15 | -------------------------------------------------------------------------------- /dist/utils/showtimedif.js: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // calculate the size of a value that ends with text identifier 3 | //------------------------------------------------------------------------------ 4 | import vpk from '../lib/vpk.js'; 5 | import { logMessage } from '../utils/logging.js'; 6 | export function showTimeDiff(start, stop, what) { 7 | try { 8 | if (stop >= start) { 9 | if (typeof vpk.stats.durations === 'undefined') { 10 | vpk.stats.durations = []; 11 | } 12 | vpk.stats.durations.push({ what: what, time: stop - start }); 13 | } 14 | else { 15 | logMessage(`UTL289a - Start time ${start}, is greater than stop time ${stop}`); 16 | } 17 | } 18 | catch (err) { 19 | logMessage(`UTL289 - Error calculating time milliseconds duration, message: ${err}`); 20 | logMessage(`UTL289 - Error stack: ${err.stack}`); 21 | return 0; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /dist/utils/sortjsonbykeys.js: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // sort object by keys 3 | //------------------------------------------------------------------------------ 4 | import { logMessage } from '../utils/logging.js'; 5 | export function sortJSONByKeys(data) { 6 | let newJson = {}; 7 | let keys; 8 | let key; 9 | let k; 10 | try { 11 | keys = Object.keys(data); 12 | keys.sort(); 13 | for (k = 0; k < keys.length; k++) { 14 | key = keys[k]; 15 | newJson[key] = data[key]; 16 | } 17 | } 18 | catch (err) { 19 | logMessage(`UTL086 - Error sorting, message: ${err}`); 20 | logMessage(`UTL086 - Error stack: ${err.stack}`); 21 | } 22 | return newJson; 23 | } 24 | -------------------------------------------------------------------------------- /dist/utils/timediff.js: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // Routine to calculate the total seconds of duration from first date time to 3 | // end date time. As currently written the routine only handles maximum of 4 | // two consecutive days. 5 | //------------------------------------------------------------------------------ 6 | import { logMessage } from '../utils/logging.js'; 7 | export function timeDiff(startTime, endTime) { 8 | try { 9 | if (startTime === '' || endTime === '') { 10 | return 0; 11 | } 12 | if (startTime === endTime) { 13 | return 0; 14 | } 15 | let start = new Date(startTime); 16 | let end = new Date(endTime); 17 | var seconds = (end.getTime() - start.getTime()) / 1000; 18 | return parseInt(seconds); 19 | } 20 | catch (err) { 21 | logMessage(`UTL089 - Error calculating time duration, message: ${err}`); 22 | logMessage(`UTL089 - Error stack: ${err.stack}`); 23 | return 0; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | // Enable latest features 4 | "lib": ["ESNext", "DOM"], 5 | "target": "ESNext", 6 | "module": "ESNext", 7 | "moduleDetection": "force", 8 | "jsx": "react-jsx", 9 | "allowJs": true, 10 | 11 | // Bundler mode 12 | "moduleResolution": "bundler", 13 | "allowImportingTsExtensions": true, 14 | "verbatimModuleSyntax": true, 15 | "noEmit": true, 16 | 17 | // Best practices 18 | "strict": true, 19 | "skipLibCheck": true, 20 | "noFallthroughCasesInSwitch": true, 21 | 22 | // Some stricter flags (disabled by default) 23 | "noUnusedLocals": false, 24 | "noUnusedParameters": false, 25 | "noPropertyAccessFromIndexSignature": false 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/afterParse/buildAdditionalServerData.ts: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // common routines 3 | //----------------------------------------------------------------------------- 4 | 'use strict'; 5 | 6 | import { schematicParse } from '../schematic/data/schematicParse.js'; 7 | import { schematicHtml } from '../schematic/html/schematicHtml.js'; 8 | import { buildStorage } from '../lib/buildStorage.js'; 9 | import { logMessage } from '../utils/logging.js'; 10 | 11 | export function buildAdditionalServerData(client: any) { 12 | try { 13 | logMessage('AFT005 - Building schematic information '); 14 | schematicParse(); 15 | schematicHtml(); 16 | buildStorage(); 17 | client.emit('getKStatus', { msg: 'Building schematic information, press "Close" button.' }); 18 | } catch (err) { 19 | logMessage('AFT006 - Error processing schematic, message: ' + err); 20 | logMessage('AFT006 - Stack: ' + err.stack); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/afterParse/clusterSummary.ts: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // common routines 3 | //----------------------------------------------------------------------------- 4 | 'use strict'; 5 | 6 | import vpk from '../lib/vpk.js'; 7 | 8 | export function clusterSummary() { 9 | vpk.clusterSummary = {}; 10 | vpk.clusterSummary['hogs'] = vpk.hogs; 11 | vpk.clusterSummary['nodes'] = vpk.nodesFnum; 12 | vpk.clusterSummary['stats'] = vpk.stats; 13 | vpk.clusterSummary['csiNode'] = vpk.csiNodeFnum; 14 | vpk.clusterSummary['csiDriver'] = vpk.csiDriverName; 15 | } 16 | -------------------------------------------------------------------------------- /src/afterParse/flipRepoFirst.ts: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // Flip the data to the fnum of the key and the repository for the data 3 | //----------------------------------------------------------------------------- 4 | 'use strict'; 5 | 6 | import vpk from '../lib/vpk.js'; 7 | import { logMessage } from '../utils/logging.js'; 8 | 9 | export function flipRepoFirst() { 10 | try { 11 | let keys: string[] = Object.keys(vpk.imageRepositoryFirst); 12 | let newD: any = {}; 13 | for (let i: number = 0; i < keys.length; i++) { 14 | if (typeof newD[vpk.imageRepositoryFirst[keys[i]]] === 'undefined') { 15 | newD[vpk.imageRepositoryFirst[keys[i]]] = []; 16 | } 17 | newD[vpk.imageRepositoryFirst[keys[i]]].push(keys[i]); 18 | } 19 | vpk.imageRepositoryFirst = newD; 20 | } catch (err) { 21 | logMessage('AFT267 - Error processing flipRepoFirst, message: ' + err); 22 | logMessage('AFT267 - Stack: ' + err.stack); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/afterParse/ripIPs.ts: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // ??? 3 | //----------------------------------------------------------------------------- 4 | 'use strict'; 5 | 6 | export function ripIPS(data: any) { 7 | let ipArray: any = {}; 8 | let base: string; 9 | for (let i: number = 0; i < data.length; i++) { 10 | base = data[i].substring(0, data[i].lastIndexOf('.')); 11 | if (typeof ipArray[base] === 'undefined') { 12 | ipArray[base] = 1; 13 | } else { 14 | ipArray[base] = ipArray[base] + 1; 15 | } 16 | } 17 | return ipArray; 18 | } 19 | -------------------------------------------------------------------------------- /src/afterParse/sortByKey.ts: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // Generic sorting function//----------------------------------------------------------------------------- 3 | 'use strict'; 4 | 5 | export function sortByKey(array: any, sortKey: any) { 6 | return array.sort((a: any, b: any) => { 7 | if (a[sortKey] < b[sortKey]) { 8 | return -1; 9 | } else if (a[sortKey] > b[sortKey]) { 10 | return 1; 11 | } else { 12 | return 0; 13 | } 14 | }); 15 | } 16 | -------------------------------------------------------------------------------- /src/filehandler/dirdate.ts: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // build date and time string 3 | //------------------------------------------------------------------------------ 4 | export function dirDate() { 5 | var dStr = new Date().toISOString(); 6 | var fp; 7 | fp = dStr.indexOf('T'); 8 | if (fp > -1) { 9 | dStr = dStr.substring(0, fp) + '-' + dStr.substring(fp + 1); 10 | } 11 | fp = dStr.indexOf(':'); 12 | if (fp > -1) { 13 | dStr = dStr.substring(0, fp) + 'h-' + dStr.substring(fp + 1); 14 | } 15 | fp = dStr.indexOf(':'); 16 | if (fp > -1) { 17 | dStr = dStr.substring(0, fp) + 'm-' + dStr.substring(fp + 1); 18 | } 19 | 20 | fp = dStr.indexOf('.'); 21 | if (fp > -1) { 22 | dStr = dStr.substring(0, fp) + 's'; 23 | } 24 | return dStr; 25 | } 26 | -------------------------------------------------------------------------------- /src/filehandler/formatdir.ts: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // format byte amount appending alpha category 3 | //------------------------------------------------------------------------------ 4 | 5 | export function formatDir(dir: any) { 6 | let os = process.platform; 7 | let nd = ''; 8 | let c = ''; 9 | if (os.startsWith('win')) { 10 | for (let i = 0; i < dir.length; i++) { 11 | c = dir.substring(i, i); 12 | if (c === '/') { 13 | nd = nd + '\\'; 14 | } else { 15 | nd = nd + c; 16 | } 17 | } 18 | } else { 19 | for (let i = 0; i < dir.length; i++) { 20 | c = dir.substring(i, i + 1); 21 | if (c === '\\') { 22 | nd = nd + '/'; 23 | } else { 24 | nd = nd + c; 25 | } 26 | } 27 | } 28 | return nd; 29 | } 30 | -------------------------------------------------------------------------------- /src/filehandler/makedir.ts: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // create a directory 3 | //----------------------------------------------------------------------------- 4 | import { logMessage } from '../utils/logging.js'; 5 | 6 | import fs from 'node:fs'; 7 | 8 | export function makedir(dir: any) { 9 | try { 10 | if (!fs.existsSync(dir)) { 11 | fs.mkdirSync(dir); 12 | logMessage(`FHL158 - Created directory: ${dir}`); 13 | } else { 14 | logMessage(`FHL159 - Directory: ${dir} exists`); 15 | } 16 | return 'PASS'; 17 | } catch (e) { 18 | logMessage(`FHL160 - Failed to create directory: ${dir} error message: ${e}`); 19 | return 'FAIL'; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/filehandler/readlicensefile.ts: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // read the license file and put content in memory var 3 | //----------------------------------------------------------------------------- 4 | import vpk from '../lib/vpk.js'; 5 | import { logMessage } from '../utils/logging.js'; 6 | 7 | import fs from 'node:fs'; 8 | 9 | export function readLicenseFile() { 10 | let base = process.cwd(); 11 | let fn = base + '/LICENSE'; 12 | let found = false; 13 | try { 14 | if (fs.existsSync(fn)) { 15 | found = true; 16 | } 17 | if (found) { 18 | let content: any = fs.readFileSync(fn); 19 | content = content.toString(); 20 | vpk.LICENSE = content; 21 | return; 22 | } else { 23 | vpk.LICENSE = 'Open source software, MIT license'; 24 | } 25 | } catch (err) { 26 | logMessage(`FHL834 - Failed to read LICENSE file, message: ${err}`); 27 | return 'Open source software, MIT license'; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/filehandler/remdir.ts: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // remove a directory 3 | //----------------------------------------------------------------------------- 4 | import { logMessage } from '../utils/logging.js'; 5 | 6 | import fs from 'node:fs'; 7 | 8 | export function remdir(dir: any) { 9 | try { 10 | // remove the directory if it already exists; 11 | if (fs.existsSync(dir)) { 12 | fs.unlinkSync(dir); 13 | } 14 | // create the directory 15 | fs.mkdirSync(dir); 16 | logMessage(`FHL164 - Creating directory: ${dir}`); 17 | } catch (err) { 18 | logMessage(`FHL155 - Unable to create snapshot directory: ${dir} error message: ${err}`); 19 | logMessage(`FHL155 - ${err.stack}`); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/fileio/processContainer.ts: -------------------------------------------------------------------------------- 1 | // workload processing logic 2 | //------------------------------------------------------------------------------ 3 | // create index entries in the global vpk 4 | //------------------------------------------------------------------------------ 5 | 'use strict'; 6 | 7 | import vpk from '../lib/vpk.js'; 8 | import { workloadParser } from '../parsers/workloads/parse.js'; 9 | 10 | export function processContainer( 11 | y_ns: string, 12 | y_kind: string, 13 | y_name: string, 14 | fn: any, 15 | part: any, 16 | y_node: any, 17 | fnum: any, 18 | oRef: any, 19 | cStatus: any, 20 | statusPhase: string, 21 | ) { 22 | workloadParser(y_ns, y_kind, y_name, vpk.yaml, fnum, y_node, fn, oRef, cStatus, statusPhase); 23 | } 24 | -------------------------------------------------------------------------------- /src/help/buildDocs.ts: -------------------------------------------------------------------------------- 1 | // src/documentation/buildDocs.ts 2 | import vpk from '../lib/vpk.js'; 3 | 4 | import { logMessage } from '../utils/logging.js'; 5 | import { processFiles } from './fileProcessor.js'; 6 | 7 | //import * as fs from 'fs'; 8 | import fs from 'node:fs'; 9 | 10 | const cwd = process.cwd(); 11 | let docPath: string; 12 | 13 | /** 14 | * Initiates the documentation build process. 15 | */ 16 | export function buildDocumentation(): void { 17 | vpk.documentation = {}; 18 | const files: any = readDocsDirectory(); 19 | if (files !== '') { 20 | processFiles(files); 21 | } 22 | } 23 | 24 | /** 25 | * Reads the documentation directory and returns a list of files. 26 | */ 27 | function readDocsDirectory(): string[] { 28 | try { 29 | docPath = `${cwd}/dist/server/public/docs`; 30 | 31 | return fs.readdirSync(docPath); 32 | } catch (err) { 33 | logMessage(`DOC011 - Error getting file names in the documentation directory ${docPath}, message: ${err}`); 34 | return []; 35 | } 36 | } 37 | 38 | export { docPath }; 39 | -------------------------------------------------------------------------------- /src/help/index.ts: -------------------------------------------------------------------------------- 1 | // src/documentation/index.ts 2 | 3 | export * from './buildDocs'; 4 | export * from './fileProcessor'; 5 | export * from './helpers'; 6 | -------------------------------------------------------------------------------- /src/kube/driver.ts: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // Get the K8s resource type and emit message after processing 3 | //----------------------------------------------------------------------------- 4 | 'use strict'; 5 | 6 | import { getSnapshot } from '../snapshot/getSnapshot.js'; 7 | 8 | export async function driver(data: any, kga: any[], client: any, dynDir: any) { 9 | await getSnapshot(data, kga, client, dynDir); 10 | } 11 | -------------------------------------------------------------------------------- /src/kube/runCommand.ts: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // Issue command from UI 3 | //----------------------------------------------------------------------------- 4 | 'use strict'; 5 | 6 | import { execSync } from 'child_process'; 7 | import { logMessage } from '../utils/logging.js'; 8 | 9 | export function runCommand(cmd: string) { 10 | try { 11 | logMessage('KUB101 - Command to run: ' + cmd); 12 | const out = execSync(cmd).toString(); 13 | const result = out.length > 0 ? out.split('\n') : ['OK']; 14 | return { output: result, status: 'pass' }; 15 | } catch (err) { 16 | logMessage('KUB102 - Error from command, message: ' + err); 17 | const errorMsg = typeof err.message !== 'undefined' ? [err.message] : ['Command failed to run properly']; 18 | return { output: errorMsg, status: 'fail' }; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/lib/buildStorage.ts: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // ?? 3 | //----------------------------------------------------------------------------- 4 | 5 | import vpk from './vpk.js'; 6 | 7 | import { logMessage } from '../utils/logging.js'; 8 | 9 | export function buildStorage() { 10 | vpk.storageInfo = {}; 11 | try { 12 | vpk.storageInfo.StorageClass = vpk.storageClassName; 13 | vpk.storageInfo.PVinfo = vpk.pvFnum; 14 | vpk.storageInfo.PVCinfo = vpk.pvcFnum; 15 | vpk.storageInfo.CSIDriver = vpk.csiDriverName; 16 | vpk.storageInfo.CSINode = vpk.csiNodeFnum; 17 | vpk.storageInfo.SpaceReqSC = vpk.spaceReqSC; 18 | vpk.storageInfo.SpaceReqPVC = vpk.spaceReqPVC; 19 | return; 20 | } catch (err) { 21 | logMessage('STO001 - Error building storageInfo, message: ' + err); 22 | logMessage('STO001 - Stack: ' + err.stack); 23 | return ''; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/lib/vpkSpan.ts: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // VPK objects that are not reset when new snapshot is loaded. 3 | // These data varaibles need to 'span' the reset. 4 | //----------------------------------------------------------------------------- 5 | 6 | let vpkSpan = { 7 | readyz: {}, 8 | do_not_delete: 'do not delete', 9 | }; 10 | export default vpkSpan; 11 | -------------------------------------------------------------------------------- /src/parsers/workloads/saveImageInfo.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Extracts volume information from the workload and updates relevant data structures. 3 | * @param c_name Container name 4 | * @param c_image Container image name 5 | * @param ctyoe Container type 6 | * @param fnum File number identifier 7 | */ 8 | 9 | import vpk from '../../lib/vpk.js'; 10 | 11 | export function saveImageInfo(c_name: string, c_image: any, ctype: string, fnum: any) { 12 | // save image data 13 | vpk.pods[fnum].containerNames.push({ 14 | c_name: c_name, 15 | c_image: c_image, 16 | }); 17 | // Update container type counts 18 | if (ctype === 'I') { 19 | vpk.pods[fnum].typeIcnt = vpk.pods[fnum].typeIcnt + 1; 20 | } else { 21 | vpk.pods[fnum].typeCcnt = vpk.pods[fnum].typeCcnt + 1; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/parsers/workloads/savePorts.ts: -------------------------------------------------------------------------------- 1 | import vpk from '../../lib/vpk.js'; 2 | import { containerLink } from '../../utils/containerlink.js'; 3 | 4 | export function savePorts(obj: any, e: number, fnum: any) { 5 | if (typeof obj[e].ports === 'undefined') { 6 | return; 7 | } 8 | for (let p = 0; p < obj[e].ports.length; p++) { 9 | if (typeof obj[e].ports[p].containerPort !== 'undefined') { 10 | containerLink(fnum, 'Ports', obj[e].ports[p].containerPort, '', obj[e].ports[p]); 11 | vpk.pods[fnum].ports.push(obj[e].ports[p].containerPort); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/parsers/workloads/sharedData.ts: -------------------------------------------------------------------------------- 1 | // src/Singleton.ts 2 | 3 | class SharedData { 4 | private static instance: SharedData; 5 | 6 | // Shared data properties 7 | public sharedValue1: number = 0; 8 | public sharedValue2: string = ''; 9 | public sharedArray: string[] = []; 10 | 11 | // Private constructor to prevent instantiation 12 | private constructor() {} 13 | 14 | // Static method to get the singleton instance 15 | public static getInstance(): SharedData { 16 | if (!SharedData.instance) { 17 | SharedData.instance = new SharedData(); 18 | } 19 | return SharedData.instance; 20 | } 21 | 22 | // Methods to manipulate shared data 23 | public updateSharedValue1(value: number): void { 24 | this.sharedValue1 = value; 25 | } 26 | 27 | public addToSharedArray(item: string): void { 28 | this.sharedArray.push(item); 29 | } 30 | } 31 | 32 | export const sharedData = SharedData.getInstance(); 33 | -------------------------------------------------------------------------------- /src/schematic/data/checkEvents.ts: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // ??? 3 | //----------------------------------------------------------------------------- 4 | 5 | import vpk from '../../lib/vpk.js'; 6 | 7 | export function checkEvents(container) { 8 | let key: string = container.kind + '.' + container.namespace + '.' + container.name; 9 | let events: any[] = []; 10 | let hl: number = vpk.eventMessage.length; 11 | for (let e = 0; e < hl; e++) { 12 | if (vpk.eventMessage[e].key === key) { 13 | events.push(vpk.eventMessage[e]); 14 | vpk.eventMessage[e].used = true; 15 | continue; 16 | } 17 | if (vpk.eventMessage[e].involvedName === container.name) { 18 | events.push(vpk.eventMessage[e]); 19 | vpk.eventMessage[e].used = true; 20 | continue; 21 | } 22 | } 23 | container.Events = events; 24 | } 25 | -------------------------------------------------------------------------------- /src/schematic/data/checkUsage.ts: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // ??? 3 | //----------------------------------------------------------------------------- 4 | 5 | import { namespaceLevel } from './namespaceLevel.js'; 6 | import { clusterLevel } from './clusterLevel.js'; 7 | 8 | export function checkUsage(data: any, fnum: any) { 9 | if (data.kind === 'RoleBinding' || data.kind === 'Role') { 10 | return; 11 | } 12 | 13 | if (typeof data.namespace === 'undefined') { 14 | data.namespace = 'cluster-level'; 15 | } 16 | 17 | if (data.namespace === '' || data.namespace === 'cluster-level') { 18 | clusterLevel(data, data.kind, fnum); 19 | } else { 20 | namespaceLevel(data, data.kind, fnum); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/schematic/data/populateBaseContainer.ts: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // ??? 3 | //----------------------------------------------------------------------------- 4 | 5 | import vpk from '../../lib/vpk.js'; 6 | import { logMessage } from '../../utils/logging.js'; 7 | 8 | import { populateContainer } from './populateContainer.js'; 9 | import { checkUsage } from './checkUsage.js'; 10 | 11 | export function populateBaseContainer(data: any) { 12 | let e: number; 13 | let fnum: any; 14 | try { 15 | for (e = 0; e < data.length; e++) { 16 | fnum = data[e].fnum; 17 | checkUsage(data[e], fnum); 18 | if (typeof vpk.pods[fnum] !== 'undefined') { 19 | populateContainer(vpk.pods[fnum], fnum); 20 | } 21 | } 22 | } catch (err) { 23 | logMessage('SCM001 - Error processing schematic, fnum: ' + fnum + ' message: ' + err); 24 | logMessage('SCM101 - Stack: ' + err.stack); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/schematic/data/populateContainer.ts: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // ??? 3 | //----------------------------------------------------------------------------- 4 | 5 | import { checkEvents } from './checkEvents.js'; 6 | import { checkType } from './checkType.js'; 7 | 8 | export function populateContainer(container: any, fnum: any) { 9 | container = checkType(container, 'Secret', fnum); 10 | container = checkType(container, 'ConfigMap', fnum); 11 | container = checkType(container, 'PersistentVolumeClaim', fnum); 12 | container = checkType(container, 'ServiceAccount', fnum); 13 | container = checkEvents(container); 14 | } 15 | -------------------------------------------------------------------------------- /src/schematic/data/populateDaemonSetPods.ts: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // ??? 3 | //----------------------------------------------------------------------------- 4 | 5 | import vpk from '../../lib/vpk.js'; 6 | 7 | export function populateDaemonSetPods() { 8 | let keys: any[] = Object.keys(vpk.pods); 9 | let key: string; 10 | 11 | for (let k = 0; k < keys.length; k++) { 12 | key = keys[k]; 13 | if (!key.startsWith('0000')) { 14 | if (vpk.daemonSetPods.includes(key)) { 15 | vpk.pods[key].daemonSetPod = true; 16 | } else { 17 | vpk.pods[key].daemonSetPod = false; 18 | } 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/schematic/data/populateNetwork.ts: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // ??? 3 | //----------------------------------------------------------------------------- 4 | 5 | import { logMessage } from '../../utils/logging.js'; 6 | import { populateEndpoints } from './populateEndpoints.js'; 7 | import { populateEndpointSlice } from './populateEndpointSlice.js'; 8 | 9 | export function populateNetwork() { 10 | try { 11 | populateEndpoints(); 12 | populateEndpointSlice(); 13 | } catch (err) { 14 | logMessage('SCM005 - Error processing schematic, message: ' + err); 15 | logMessage('SCM105 - Stack: ' + err.stack); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/schematic/data/populatePodsToShow.ts: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // ??? 3 | //----------------------------------------------------------------------------- 4 | 5 | import vpk from '../../lib/vpk.js'; 6 | import { logMessage } from '../../utils/logging.js'; 7 | 8 | export function populatePodsToShow(podNS) { 9 | let ns: string; 10 | let key: string; 11 | try { 12 | for (let i = 0; i < podNS.length; i++) { 13 | ns = podNS[i]; 14 | key = '0000-' + ns; 15 | if (typeof vpk.pods[key].Pods === 'undefined') { 16 | vpk.pods[key].Pods = true; 17 | } 18 | } 19 | podNS = null; 20 | } catch (err) { 21 | logMessage('SCM830 - Error building container Pods flag, message: ' + err); 22 | logMessage(err.stack); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/schematic/data/schematicParse.ts: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // ??? 3 | //----------------------------------------------------------------------------- 4 | 5 | import { logMessage } from '../../utils/logging.js'; 6 | import { showTimeDiff } from '../../utils/showtimedif.js'; 7 | import { getPTime } from '../../utils/getptime.js'; 8 | import { parseSchematic } from './parseSchematic.js'; 9 | 10 | export function schematicParse() { 11 | let startT: any = getPTime(); 12 | logMessage('SCM001 - svgSchematic invoked'); 13 | parseSchematic(); 14 | let stopT: any = getPTime(); 15 | showTimeDiff(startT, stopT, 'svgSchematic.parseSchematic()'); 16 | return; 17 | } 18 | -------------------------------------------------------------------------------- /src/schematic/html/buildSvgInfo.ts: -------------------------------------------------------------------------------- 1 | import vpk from '../../lib/vpk.js'; 2 | import { buildTipContent } from './buildTipContent.js'; 3 | 4 | export function buildSvgInfo(data: any, fnum: any, type: string) { 5 | let id: string = fnum + '.' + type; 6 | let tName: string = type; 7 | if (typeof vpk.svgInfo[id] === 'undefined') { 8 | vpk.svgInfo[id] = []; 9 | } 10 | let content: any = buildTipContent(data, type, fnum); 11 | if (type === 'Phase') { 12 | tName = 'Pod Phase / IPs'; 13 | } 14 | if (type === 'CRD') { 15 | tName = 'CustomResourceDefinition'; 16 | } 17 | // check if an entry already exists, if so skip 18 | if (typeof vpk.svgInfo[id][0] === 'undefined') { 19 | vpk.svgInfo[id].push( 20 | '' + 21 | tName + 22 | '
' + 23 | content + 24 | '', 25 | ); 26 | } 27 | return id; 28 | } 29 | -------------------------------------------------------------------------------- /src/schematic/html/formatDate.ts: -------------------------------------------------------------------------------- 1 | export function formatDate(data: any) { 2 | if (typeof data === 'undefined' || data === null) { 3 | return 'Unknown date'; 4 | } 5 | let mydate: any = new Date(data); 6 | let fDate: string = mydate.toDateString(); 7 | let tPart: any[] = data.split('T'); 8 | if (typeof tPart[1] !== 'undefined') { 9 | fDate = fDate + ' ' + tPart[1]; 10 | if (fDate.endsWith('Z')) { 11 | fDate = fDate.substring(0, fDate.length - 1) + ' GMT'; 12 | } 13 | } 14 | return fDate; 15 | } 16 | -------------------------------------------------------------------------------- /src/schematic/html/formatJSON.ts: -------------------------------------------------------------------------------- 1 | export function formatJSON(content: any) { 2 | let cData: any = JSON.stringify(content, null, 2); 3 | cData = cData.split('\n'); 4 | let nLine: string = ''; 5 | let rtn: string = ''; 6 | let pttrn: any = /^\s*/; 7 | let spc: number = 0; 8 | for (let i: number = 0; i < cData.length; i++) { 9 | nLine = ''; 10 | spc = cData[i].match(pttrn)[0].length; 11 | if (spc > 0) { 12 | for (let s: number = 0; s < spc; s++) { 13 | nLine = nLine + ' '; 14 | } 15 | } 16 | rtn = rtn + nLine + cData[i].substring(spc) + '
'; 17 | } 18 | return rtn; 19 | } 20 | -------------------------------------------------------------------------------- /src/schematic/html/getRequestedData.ts: -------------------------------------------------------------------------------- 1 | import vpk from '../../lib/vpk.js'; 2 | 3 | export function getRequestedData(ns: string) { 4 | if (ns === ':all-namespaces:') { 5 | return vpk.schematicSVGs; 6 | } 7 | let keys = ns.split(':'); 8 | let rtn = {}; 9 | for (let i: number = 0; i < keys.length; i++) { 10 | if (keys[i] === '') { 11 | continue; 12 | } 13 | rtn[keys[i]] = vpk.schematicSVGs[keys[i]]; 14 | } 15 | return rtn; 16 | } 17 | -------------------------------------------------------------------------------- /src/search/buildReturn.ts: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // ?? 3 | //----------------------------------------------------------------------------- 4 | 5 | import { logMessage } from '../utils/logging.js'; 6 | 7 | export function buildReturn(fnumBase: any) { 8 | try { 9 | let keys: any[] = Object.keys(fnumBase); 10 | let key: string; 11 | let rtn: any = []; 12 | let item: any; 13 | let fn: any; 14 | for (let i = 0; i < keys.length; i++) { 15 | key = keys[i]; 16 | fn = fnumBase[key]; 17 | item = { 18 | namespace: fn.ns, 19 | kind: fn.kind, 20 | name: fn.name, 21 | fnum: key, 22 | }; 23 | rtn.push(item); 24 | } 25 | return rtn; 26 | } catch (err) { 27 | logMessage('SCH005 - Error processing, message: ' + err); 28 | logMessage('SCH005 - Stack: ' + err.stack); 29 | return []; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/search/processSelected.ts: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // ?? 3 | //----------------------------------------------------------------------------- 4 | 5 | export function processSelected(keep: any, fnumBase: string) { 6 | let keys: any[] = Object.keys(fnumBase); 7 | let key: string; 8 | for (let i = 0; i < keys.length; i++) { 9 | key = keys[i]; 10 | if (keep.includes(key)) { 11 | continue; 12 | } else { 13 | delete fnumBase[key]; 14 | } 15 | } 16 | return; 17 | } 18 | -------------------------------------------------------------------------------- /src/search/reduceKV.ts: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // ?? 3 | //----------------------------------------------------------------------------- 4 | 5 | export function reduceKV(keys: any, values: any) { 6 | let rtn: any = []; 7 | let key: any; 8 | for (key of keys) { 9 | if (values.includes(key)) { 10 | rtn.push(key); 11 | } 12 | } 13 | return rtn; 14 | } 15 | -------------------------------------------------------------------------------- /src/security/buildResourceHierarchy.ts: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // common routines 3 | //------------------------------------------------------------------------------ 4 | 5 | import { createResourceHierarchy } from './createResourceHierarchy.js'; 6 | 7 | export function buildResourceHierarchy() { 8 | return createResourceHierarchy(); 9 | } 10 | -------------------------------------------------------------------------------- /src/security/buildSubjectHierarchy.ts: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // common routines 3 | //------------------------------------------------------------------------------ 4 | 5 | import { createSubjectHierarchy } from './createSubjectHierarchy.js'; 6 | 7 | export function buildSubjectHierarchy() { 8 | return createSubjectHierarchy(); 9 | } 10 | -------------------------------------------------------------------------------- /src/security/getSecurityRules.ts: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // common routines 3 | //------------------------------------------------------------------------------ 4 | 5 | import { filterSecurityRules } from './filterSecurityRules.js'; 6 | 7 | export function getSecurityRules(parms) { 8 | return filterSecurityRules(parms); 9 | } 10 | -------------------------------------------------------------------------------- /src/security/getSecurityViewData.ts: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // common routines 3 | //------------------------------------------------------------------------------ 4 | 5 | import { filterViewData } from './filterViewData.js'; 6 | 7 | export function getSecurityViewData(parms) { 8 | return filterViewData(parms); 9 | } 10 | -------------------------------------------------------------------------------- /src/server/public/ace/css/chrome-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/ace/css/chrome-1.png -------------------------------------------------------------------------------- /src/server/public/ace/css/chrome-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/ace/css/chrome-2.png -------------------------------------------------------------------------------- /src/server/public/ace/css/merbivore-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/ace/css/merbivore-1.png -------------------------------------------------------------------------------- /src/server/public/ace/css/merbivore-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/ace/css/merbivore-2.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/about.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/about.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/config.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/config_action.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/config_action.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/config_cluster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/config_cluster.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/config_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/config_confirm.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/help_close_config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/help_close_config.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/help_toc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/help_toc.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/overview_container.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/overview_container.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/overview_local.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/overview_local.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/resource.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/resource.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/resource_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/resource_dark.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/resource_light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/resource_light.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/snapshot_DropDown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/snapshot_DropDown.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/snapshot_Name.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/snapshot_Name.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/snapshot_dropdown_container.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/snapshot_dropdown_container.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/snapshot_previous.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/snapshot_previous.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/snapshot_ssh_parms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/snapshot_ssh_parms.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/splash_log.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/splash_log.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/splash_vpk_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/splash_vpk_2.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/tab_cluster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/tab_cluster.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/tab_cluster_drill_down1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/tab_cluster_drill_down1.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/tab_cluster_drill_down2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/tab_cluster_drill_down2.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/tab_cluster_drill_down3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/tab_cluster_drill_down3.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/tab_cluster_drill_down4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/tab_cluster_drill_down4.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/tab_cluster_legend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/tab_cluster_legend.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/tab_cluster_report.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/tab_cluster_report.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/tab_cluster_timelapse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/tab_cluster_timelapse.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/tab_cluster_timelapse_controls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/tab_cluster_timelapse_controls.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/tab_cluster_timelapse_detail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/tab_cluster_timelapse_detail.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/tab_container_images_graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/tab_container_images_graph.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/tab_container_images_legend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/tab_container_images_legend.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/tab_container_images_table.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/tab_container_images_table.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/tab_event_msgs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/tab_event_msgs.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/tab_event_msgs_action.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/tab_event_msgs_action.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/tab_event_msgs_graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/tab_event_msgs_graph.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/tab_event_msgs_table.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/tab_event_msgs_table.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/tab_event_msgs_timeline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/tab_event_msgs_timeline.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/tab_network_filter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/tab_network_filter.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/tab_network_nodes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/tab_network_nodes.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/tab_network_nodes_detail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/tab_network_nodes_detail.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/tab_network_nodes_detail2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/tab_network_nodes_detail2.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/tab_network_services.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/tab_network_services.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/tab_ownerref.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/tab_ownerref.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/tab_ownerref2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/tab_ownerref2.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/tab_ownerref_filter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/tab_ownerref_filter.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/tab_ownerref_filter_results.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/tab_ownerref_filter_results.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/tab_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/tab_search.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/tab_search_table.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/tab_search_table.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/tab_security.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/tab_security.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/tab_security2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/tab_security2.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/tab_security_filter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/tab_security_filter.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/tab_security_legend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/tab_security_legend.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/tab_stats_reportView.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/tab_stats_reportView.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/tab_stats_treeMap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/tab_stats_treeMap.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/tab_storage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/tab_storage.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/tab_storage_by_namespace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/tab_storage_by_namespace.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/tab_storage_by_node.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/tab_storage_by_node.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/tab_storage_by_type.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/tab_storage_by_type.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/tab_workloadschematics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/tab_workloadschematics.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/tab_workloadschematics_decode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/tab_workloadschematics_decode.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/tab_workloadschematics_filter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/tab_workloadschematics_filter.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/tab_workloadschematics_namespace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/tab_workloadschematics_namespace.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/tab_workloadschematics_resources.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/tab_workloadschematics_resources.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/tab_workloadschematics_rollover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/tab_workloadschematics_rollover.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/tab_workloadschematics_source.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/tab_workloadschematics_source.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/ui_no_data.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/ui_no_data.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/ui_shutdown_complete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/ui_shutdown_complete.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/ui_shutdown_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/ui_shutdown_confirm.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/ui_startup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/ui_startup.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/ui_top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/ui_top.png -------------------------------------------------------------------------------- /src/server/public/docs/docimages/vpk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/docs/docimages/vpk.png -------------------------------------------------------------------------------- /src/server/public/images/3d/3d-3rdParty-Plane.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/images/3d/3d-3rdParty-Plane.png -------------------------------------------------------------------------------- /src/server/public/images/3d/3d-csi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/images/3d/3d-csi.png -------------------------------------------------------------------------------- /src/server/public/images/3d/3d-docker-container-init.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/images/3d/3d-docker-container-init.png -------------------------------------------------------------------------------- /src/server/public/images/3d/3d-docker-container.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/images/3d/3d-docker-container.png -------------------------------------------------------------------------------- /src/server/public/images/3d/3d-docker-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/images/3d/3d-docker-image.png -------------------------------------------------------------------------------- /src/server/public/images/3d/3d-ep.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/images/3d/3d-ep.png -------------------------------------------------------------------------------- /src/server/public/images/3d/3d-ingress.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/images/3d/3d-ingress.png -------------------------------------------------------------------------------- /src/server/public/images/3d/3d-kubelet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/images/3d/3d-kubelet.png -------------------------------------------------------------------------------- /src/server/public/images/3d/3d-mstNode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/images/3d/3d-mstNode.png -------------------------------------------------------------------------------- /src/server/public/images/3d/3d-podBlue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/images/3d/3d-podBlue.png -------------------------------------------------------------------------------- /src/server/public/images/3d/3d-podGreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/images/3d/3d-podGreen.png -------------------------------------------------------------------------------- /src/server/public/images/3d/3d-podGrey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/images/3d/3d-podGrey.png -------------------------------------------------------------------------------- /src/server/public/images/3d/3d-podMagenta.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/images/3d/3d-podMagenta.png -------------------------------------------------------------------------------- /src/server/public/images/3d/3d-podRed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/images/3d/3d-podRed.png -------------------------------------------------------------------------------- /src/server/public/images/3d/3d-podYellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/images/3d/3d-podYellow.png -------------------------------------------------------------------------------- /src/server/public/images/3d/3d-pv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/images/3d/3d-pv.png -------------------------------------------------------------------------------- /src/server/public/images/3d/3d-pvc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/images/3d/3d-pvc.png -------------------------------------------------------------------------------- /src/server/public/images/3d/3d-repository.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/images/3d/3d-repository.png -------------------------------------------------------------------------------- /src/server/public/images/3d/3d-sc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/images/3d/3d-sc.png -------------------------------------------------------------------------------- /src/server/public/images/3d/3d-svc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/images/3d/3d-svc.png -------------------------------------------------------------------------------- /src/server/public/images/3d/3d-volume.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/images/3d/3d-volume.png -------------------------------------------------------------------------------- /src/server/public/images/3d/3d-wrkNode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/images/3d/3d-wrkNode.png -------------------------------------------------------------------------------- /src/server/public/images/clouds.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/images/clouds.jpg -------------------------------------------------------------------------------- /src/server/public/images/imagesLegendGraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/images/imagesLegendGraph.png -------------------------------------------------------------------------------- /src/server/public/images/imagesLegendTable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/images/imagesLegendTable.png -------------------------------------------------------------------------------- /src/server/public/images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/images/loading.gif -------------------------------------------------------------------------------- /src/server/public/images/other/ibmold.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/server/public/images/other/kong.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/server/public/images/other/launch-box.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | launch 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/server/public/images/other/ocp.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/server/public/images/other/redhat.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /src/server/public/images/other/uparrow.svg: -------------------------------------------------------------------------------- 1 | 2 | up-arrow 3 | 4 | -------------------------------------------------------------------------------- /src/server/public/images/other/vpk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/images/other/vpk.png -------------------------------------------------------------------------------- /src/server/public/images/stars.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/images/stars.jpg -------------------------------------------------------------------------------- /src/server/public/images/vpk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/images/vpk.png -------------------------------------------------------------------------------- /src/server/public/images/wow/pic-cluster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/images/wow/pic-cluster.png -------------------------------------------------------------------------------- /src/server/public/images/wow/pic-containerimages.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/images/wow/pic-containerimages.png -------------------------------------------------------------------------------- /src/server/public/images/wow/pic-eventmsgs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/images/wow/pic-eventmsgs.png -------------------------------------------------------------------------------- /src/server/public/images/wow/pic-network.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/images/wow/pic-network.png -------------------------------------------------------------------------------- /src/server/public/images/wow/pic-ownerref.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/images/wow/pic-ownerref.png -------------------------------------------------------------------------------- /src/server/public/images/wow/pic-schematic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/images/wow/pic-schematic.png -------------------------------------------------------------------------------- /src/server/public/images/wow/pic-searchview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/images/wow/pic-searchview.png -------------------------------------------------------------------------------- /src/server/public/images/wow/pic-security.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/images/wow/pic-security.png -------------------------------------------------------------------------------- /src/server/public/images/wow/pic-stats.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/images/wow/pic-stats.png -------------------------------------------------------------------------------- /src/server/public/images/wow/pic-storage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/images/wow/pic-storage.png -------------------------------------------------------------------------------- /src/server/public/javascript/3rdparty/graphvizlib.wasm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/javascript/3rdparty/graphvizlib.wasm -------------------------------------------------------------------------------- /src/server/public/routes/index.js: -------------------------------------------------------------------------------- 1 | // const express = require('express'); 2 | // const router = express.Router(); 3 | // // Welcome Page 4 | // router.get('/', (req, res) => res.render('index')); 5 | // module.exports = router; 6 | import express from 'express'; 7 | const router = express.Router(); 8 | // Welcome Page 9 | router.get('/', (req, res) => res.render('index')); 10 | export default router; 11 | -------------------------------------------------------------------------------- /src/server/public/sounds/GunShot.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/sounds/GunShot.wav -------------------------------------------------------------------------------- /src/server/public/sounds/LowDing.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/sounds/LowDing.wav -------------------------------------------------------------------------------- /src/server/public/textures/clouds_nx.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/textures/clouds_nx.jpg -------------------------------------------------------------------------------- /src/server/public/textures/clouds_ny.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/textures/clouds_ny.jpg -------------------------------------------------------------------------------- /src/server/public/textures/clouds_nz.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/textures/clouds_nz.jpg -------------------------------------------------------------------------------- /src/server/public/textures/clouds_px.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/textures/clouds_px.jpg -------------------------------------------------------------------------------- /src/server/public/textures/clouds_py.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/textures/clouds_py.jpg -------------------------------------------------------------------------------- /src/server/public/textures/clouds_pz.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/textures/clouds_pz.jpg -------------------------------------------------------------------------------- /src/server/public/textures/stars_nx.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/textures/stars_nx.jpg -------------------------------------------------------------------------------- /src/server/public/textures/stars_ny.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/textures/stars_ny.jpg -------------------------------------------------------------------------------- /src/server/public/textures/stars_nz.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/textures/stars_nz.jpg -------------------------------------------------------------------------------- /src/server/public/textures/stars_px.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/textures/stars_px.jpg -------------------------------------------------------------------------------- /src/server/public/textures/stars_py.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/textures/stars_py.jpg -------------------------------------------------------------------------------- /src/server/public/textures/stars_pz.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/textures/stars_pz.jpg -------------------------------------------------------------------------------- /src/server/public/views/partials/modal-decode.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/server/public/views/partials/modal-docs.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/server/public/views/partials/modal-evtMsgs.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/server/public/views/partials/modal-message.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/server/public/views/partials/modal-multi.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/server/public/views/partials/modal-networkInfo.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/server/public/views/partials/modal-schem.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/server/public/views/partials/modal-secInfo.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/server/public/views/partials/modal-timeLapse.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/server/public/views/partials/modal-yaml.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/server/public/views/partials/tab-network.ejs: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | 10 | 11 | Filter 12 |
-------------------------------------------------------------------------------- /src/server/public/views/partials/tab-ownerRef.ejs: -------------------------------------------------------------------------------- 1 | 2 | 17 | -------------------------------------------------------------------------------- /src/server/public/views/partials/tab-schematic.ejs: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 | 5 |
6 |
7 |
8 |
9 |
10 | 11 | 12 | Filter 13 | 14 |
-------------------------------------------------------------------------------- /src/server/public/views/partials/tab-security.ejs: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 |
5 |
6 |
7 |
8 | 9 | Filter 10 |
-------------------------------------------------------------------------------- /src/server/public/views/partials/tooltip.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
12 |
-------------------------------------------------------------------------------- /src/server/public/webfonts/fa-brands-400.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/webfonts/fa-brands-400.eot -------------------------------------------------------------------------------- /src/server/public/webfonts/fa-brands-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/webfonts/fa-brands-400.ttf -------------------------------------------------------------------------------- /src/server/public/webfonts/fa-brands-400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/webfonts/fa-brands-400.woff -------------------------------------------------------------------------------- /src/server/public/webfonts/fa-brands-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/webfonts/fa-brands-400.woff2 -------------------------------------------------------------------------------- /src/server/public/webfonts/fa-regular-400.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/webfonts/fa-regular-400.eot -------------------------------------------------------------------------------- /src/server/public/webfonts/fa-regular-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/webfonts/fa-regular-400.ttf -------------------------------------------------------------------------------- /src/server/public/webfonts/fa-regular-400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/webfonts/fa-regular-400.woff -------------------------------------------------------------------------------- /src/server/public/webfonts/fa-regular-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/webfonts/fa-regular-400.woff2 -------------------------------------------------------------------------------- /src/server/public/webfonts/fa-solid-900.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/webfonts/fa-solid-900.eot -------------------------------------------------------------------------------- /src/server/public/webfonts/fa-solid-900.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/webfonts/fa-solid-900.ttf -------------------------------------------------------------------------------- /src/server/public/webfonts/fa-solid-900.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/webfonts/fa-solid-900.woff -------------------------------------------------------------------------------- /src/server/public/webfonts/fa-solid-900.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8svisual/vpk/fa074e2a3752e2c83a64c0230cd5351c892f5c98/src/server/public/webfonts/fa-solid-900.woff2 -------------------------------------------------------------------------------- /src/snapshot/reloadSnapshot.ts: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // Get data for request 3 | // kga (Kubernetes Get Array) 4 | //----------------------------------------------------------------------------- 5 | 'use strict'; 6 | 7 | import { logMessage } from '../utils/logging.js'; 8 | import { showTimeDiff } from '../utils/showtimedif.js'; 9 | import { getPTime } from '../utils/getptime.js'; 10 | import { processDir } from './processDir.js'; 11 | 12 | export function reloadSnapshot(dir: any, client: any) { 13 | let startT: any = getPTime(); 14 | logMessage(`SNP002 - snapshot reload invoked for: ${dir}`); 15 | processDir(dir, client); 16 | let stopT: any = getPTime(); 17 | showTimeDiff(startT, stopT, 'snapshot.reload()'); 18 | } 19 | -------------------------------------------------------------------------------- /src/snapshot/returnData.ts: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // ?? 3 | //----------------------------------------------------------------------------- 4 | 'use strict'; 5 | 6 | import vpk from '../lib/vpk.js'; 7 | import { saveK8sData } from './saveK8sData.js'; 8 | 9 | export function returnData(client: any, dynDir: any) { 10 | let rdata: any = {}; 11 | if (vpk.rtn === 'FAIL') { 12 | rdata.status = 'FAIL'; 13 | rdata.message = 'Failed to retrieve data, check log messages'; 14 | } else { 15 | rdata = saveK8sData(dynDir, client); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/snapshot/saveStatMsg.ts: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // save status message that occur during processing 3 | //----------------------------------------------------------------------------- 4 | 'use strict'; 5 | 6 | import { logMessage } from '../utils/logging.js'; 7 | export function saveStatMsg(msg: string, cnt: number, statMessages: any[], dashline: string) { 8 | if (msg === 'dl') { 9 | logMessage(dashline); 10 | } else { 11 | if (cnt === 0) { 12 | return; 13 | } 14 | // 1234567890123456789012345678901234567890123456789012345678901234567890 15 | msg = msg + ' '; 16 | msg = msg.substring(0, 60); 17 | 18 | logMessage(msg + cnt); 19 | statMessages.push(msg + '::' + cnt); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/utils/checkdefinednamespace.ts: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // check if namespace is in array 3 | //----------------------------------------------------------------------------- 4 | import vpk from '../lib/vpk.js'; 5 | 6 | export function checkDefinedNamespace(ns: string) { 7 | // if this namespace does not exist add it 8 | if (typeof vpk.definedNamespaces[ns] === 'undefined') { 9 | vpk.definedNamespaces[ns] = ns; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/utils/checkkind.ts: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // check if kind/type is in array 3 | //----------------------------------------------------------------------------- 4 | import vpk from '../lib/vpk.js'; 5 | 6 | export function checkKind(kind: string) { 7 | // if this type of kind does not exist create one 8 | if (typeof vpk.kinds[kind] === 'undefined') { 9 | vpk.kinds[kind] = kind; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/utils/checktype.ts: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // check types 3 | //----------------------------------------------------------------------------- 4 | import vpk from '../lib/vpk.js'; 5 | 6 | export function checkType(kind: string, key: any) { 7 | if (typeof vpk[kind] === 'undefined') { 8 | vpk[kind] = []; 9 | if (vpk.kindList.includes[kind]) { 10 | // var nop = "" 11 | } else { 12 | vpk.kindList.push(kind); 13 | } 14 | } 15 | 16 | if (typeof key === 'number') { 17 | key = key.toString(); 18 | } 19 | if (key.length > 0) { 20 | // add key if not defined 21 | if (typeof vpk[kind][key] === 'undefined') { 22 | vpk[kind][key] = []; 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/utils/chgp2.ts: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // change parameter to append a slash 3 | //------------------------------------------------------------------------------ 4 | 5 | export function chgP2(data: any) { 6 | let cp: number = data.lastIndexOf('@'); 7 | if (cp > -1) { 8 | return `${data.substring(0, cp)}/${data.substring(cp + 1)}`; 9 | } else { 10 | return data; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/utils/formatbytes.ts: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // Format byte amount appending alpha category 3 | //----------------------------------------------------------------------------- 4 | 5 | export const formatBytes = (bytesI: number, decimals = 2): string => { 6 | if (bytesI === 0) { 7 | return '0 Bytes'; 8 | } 9 | 10 | const k = 1024; 11 | const dm = Math.max(0, decimals); // Use `Math.max` for clarity 12 | const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']; 13 | const i = Math.floor(Math.log(bytesI) / Math.log(k)); 14 | 15 | return `${sizes[i]} ${parseFloat((bytesI / Math.pow(k, i)).toFixed(dm))}`; 16 | }; 17 | -------------------------------------------------------------------------------- /src/utils/getptime.ts: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // Return current time 3 | //------------------------------------------------------------------------------ 4 | 5 | export function getPTime() { 6 | let now = new Date(); 7 | return now.getTime(); 8 | } 9 | -------------------------------------------------------------------------------- /src/utils/index.ts: -------------------------------------------------------------------------------- 1 | export * from './logging.js'; 2 | -------------------------------------------------------------------------------- /src/utils/logging.ts: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // output message to console appending date and time 3 | //------------------------------------------------------------------------------ 4 | export function logMessage(msg: string) { 5 | console.log(`${new Date().toLocaleString()} :: ${msg}`); 6 | } 7 | -------------------------------------------------------------------------------- /src/utils/redactsecret.ts: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // redact the secret information 3 | //----------------------------------------------------------------------------- 4 | import vpk from '../lib/vpk.js'; 5 | export function redactSecret(data: any) { 6 | let keys: any[]; 7 | if (typeof data.data !== 'undefined') { 8 | keys = Object.keys(data.data); 9 | for (let i: number = 0; i < keys.length; i++) { 10 | data.data[keys[i]] = vpk.redactMsg; 11 | } 12 | } 13 | return data; 14 | } 15 | -------------------------------------------------------------------------------- /src/utils/showprops.ts: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // show object properties 3 | //------------------------------------------------------------------------------ 4 | 5 | export function showProps(obj: any, objName: string) { 6 | let result: string = ``; 7 | for (var i in obj) { 8 | // obj.hasOwnProperty() is used to filter out 9 | // properties from the object's prototype chain 10 | if (obj.hasOwnProperty(i)) { 11 | result += `${objName}.${i} = ${obj[i]}\n`; 12 | } 13 | } 14 | return result; 15 | } 16 | -------------------------------------------------------------------------------- /src/utils/showtimedif.ts: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // calculate the size of a value that ends with text identifier 3 | //------------------------------------------------------------------------------ 4 | 5 | import vpk from '../lib/vpk.js'; 6 | import { logMessage } from '../utils/logging.js'; 7 | 8 | export function showTimeDiff(start: any, stop: any, what: any) { 9 | try { 10 | if (stop >= start) { 11 | if (typeof vpk.stats.durations === 'undefined') { 12 | vpk.stats.durations = []; 13 | } 14 | vpk.stats.durations.push({ what: what, time: stop - start }); 15 | } else { 16 | logMessage(`UTL289a - Start time ${start}, is greater than stop time ${stop}`); 17 | } 18 | } catch (err) { 19 | logMessage(`UTL289 - Error calculating time milliseconds duration, message: ${err}`); 20 | logMessage(`UTL289 - Error stack: ${err.stack}`); 21 | return 0; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/utils/sortjsonbykeys.ts: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // sort object by keys 3 | //------------------------------------------------------------------------------ 4 | 5 | import { logMessage } from '../utils/logging.js'; 6 | 7 | export function sortJSONByKeys(data) { 8 | let newJson: any = {}; 9 | let keys: any[]; 10 | let key: string; 11 | let k: number; 12 | try { 13 | keys = Object.keys(data); 14 | keys.sort(); 15 | for (k = 0; k < keys.length; k++) { 16 | key = keys[k]; 17 | newJson[key] = data[key]; 18 | } 19 | } catch (err) { 20 | logMessage(`UTL086 - Error sorting, message: ${err}`); 21 | logMessage(`UTL086 - Error stack: ${err.stack}`); 22 | } 23 | return newJson; 24 | } 25 | -------------------------------------------------------------------------------- /src/utils/timediff.ts: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // Routine to calculate the total seconds of duration from first date time to 3 | // end date time. As currently written the routine only handles maximum of 4 | // two consecutive days. 5 | //------------------------------------------------------------------------------ 6 | 7 | import { logMessage } from '../utils/logging.js'; 8 | 9 | export function timeDiff(startTime: any, endTime: any) { 10 | try { 11 | if (startTime === '' || endTime === '') { 12 | return 0; 13 | } 14 | if (startTime === endTime) { 15 | return 0; 16 | } 17 | let start: any = new Date(startTime); 18 | let end: any = new Date(endTime); 19 | var seconds: any = (end.getTime() - start.getTime()) / 1000; 20 | return parseInt(seconds); 21 | } catch (err) { 22 | logMessage(`UTL089 - Error calculating time duration, message: ${err}`); 23 | logMessage(`UTL089 - Error stack: ${err.stack}`); 24 | return 0; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowJs": true, 4 | "checkJs": true, 5 | "outDir": "dist", 6 | "noEmit": false, 7 | "target": "ES2020", 8 | "module": "NodeNext", 9 | "moduleResolution": "NodeNext", 10 | "rootDir": "src", 11 | "skipLibCheck": true 12 | }, 13 | "include": [ 14 | "src/server/*.*", 15 | "src/lib/**/*", 16 | "src/util", 17 | "src/splash/splash.ts", 18 | "src/parsers/volume/parseVolume.ts", 19 | "src/schematic/html/schematicHtml.ts" 20 | ], 21 | "exclude": ["node_modules", "dist", "**.*.test.ts"] 22 | } 23 | --------------------------------------------------------------------------------