diff --git a/Makefile b/Makefile index ae7a6028..1d7d2d90 100644 --- a/Makefile +++ b/Makefile @@ -71,20 +71,3 @@ image-build: build .PHONY: image-push image-push: image-build $(DOCKER_BIN) push $(IMAGE_REPO):$(IMAGE_TAG) - -.PRECIOUS: %.cast -%.cast: %.demo - @WORK_DIR=$(shell dirname $<) \ - ./hack/democtl.sh "$<" "$@" \ - --ps1='\033[1;96m~/nvidia/knavigator\033[1;94m$$\033[0m ' - -.PRECIOUS: %.svg -%.svg: %.cast - @./hack/democtl.sh "$<" "$@" \ - --term xresources \ - --profile ./.xresources - rm -f $(shell dirname $<)/*.cast - -%.mp4: %.cast - @./hack/democtl.sh "$<" "$@" - rm -f $(shell dirname $<)/*.cast diff --git a/README.md b/README.md index 84f9ac0c..bfa9f071 100644 --- a/README.md +++ b/README.md @@ -39,14 +39,6 @@ Alternatively, in server or package configurations, Knavigator can receive a ser Regardless of the configuration mode, Knavigator executes tasks sequentially. Each task is dependent on the successful completion of the preceding one. Therefore, if any task fails during execution, the entire test is marked as failed. This ensures comprehensive testing and accurate reporting of results, maintaining the integrity of the testing process. -### Demo - -Here's a demo showing how to install and configure `Knavigator`, and run an example test that deploys a k8s job in a `minikube` cluster. - -

- -

- ### Documentation - [Deployment](docs/deployment.md) diff --git a/demos/Makefile b/demos/Makefile deleted file mode 100644 index d887fce8..00000000 --- a/demos/Makefile +++ /dev/null @@ -1,31 +0,0 @@ -# Copyright 2022 The Kubernetes Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -.PRECIOUS: %.cast -%.cast: %.demo - make -C .. ./demo/$@ - -.PRECIOUS: %.svg -%.svg: %.cast - make -C .. ./demo/$@ - -%.mp4: %.svg - make -C .. ./demo/$@ - -.PHONY: all -all: $(patsubst %.demo,%.svg,$(wildcard *.demo)) - -.PHONY: clean -clean: - @-rm -f *.svg diff --git a/demos/basic.demo b/demos/basic.demo deleted file mode 100644 index b1c0e7e6..00000000 --- a/demos/basic.demo +++ /dev/null @@ -1,33 +0,0 @@ -# Demo: how to install, configure and use Knvavigator in a local k8s cluster, such as minikube or KinD - -# Show the cluster infomation -kubectl cluster-info - -kubectl get nodes - -# Install KWOK node simulator - -KWOK_REPO=kubernetes-sigs/kwok -KWOK_LATEST_RELEASE="v0.6.0" -kubectl apply -f https://github.com/${KWOK_REPO}/releases/download/${KWOK_LATEST_RELEASE}/kwok.yaml -kubectl apply -f https://github.com/${KWOK_REPO}/releases/download/${KWOK_LATEST_RELEASE}/stage-fast.yaml -kubectl apply -f https://github.com/${KWOK_REPO}/raw/main/kustomize/stage/pod/chaos/pod-init-container-running-failed.yaml -kubectl apply -f https://github.com/${KWOK_REPO}/raw/main/kustomize/stage/pod/chaos/pod-container-running-failed.yaml -kubectl apply -f https://github.com/${KWOK_REPO}/raw/main/kustomize/stage/pod/general/pod-complete.yaml - -# Build Knavigator -make build - -# Run Knavigator with an example test -./bin/knavigator --workflow resources/tests/k8s/test-job.yml - -# Show the job running -kubectl get job - -# Show the pods running -kubectl get pod -o wide - -# Clean up -kubectl delete job job1 - -# That's it. Thank you! diff --git a/demos/basic.svg b/demos/basic.svg deleted file mode 100644 index 5b48c5fe..00000000 --- a/demos/basic.svg +++ /dev/null @@ -1 +0,0 @@ -~/nvidia/knavigator$~/nvidia/knavigator$#~/nvidia/knavigator$#Demo:~/nvidia/knavigator$#Demo:how~/nvidia/knavigator$#Demo:howto~/nvidia/knavigator$#Demo:howtoinstall,~/nvidia/knavigator$#Demo:howtoinstall,configure~/nvidia/knavigator$#Demo:howtoinstall,configureand~/nvidia/knavigator$#Demo:howtoinstall,configureanduse~/nvidia/knavigator$#Demo:howtoinstall,configureanduseKnvavigator~/nvidia/knavigator$#Demo:howtoinstall,configureanduseKnvavigatorin~/nvidia/knavigator$#Demo:howtoinstall,configureanduseKnvavigatorina~/nvidia/knavigator$#Demo:howtoinstall,configureanduseKnvavigatorinalocalk8sk8scluster,k8scluster,suchk8scluster,suchask8scluster,suchasminikubek8scluster,suchasminikubeork8scluster,suchasminikubeorKinD~/nvidia/knavigator$#S~/nvidia/knavigator$#Sh~/nvidia/knavigator$#Sho~/nvidia/knavigator$#Show~/nvidia/knavigator$#Showt~/nvidia/knavigator$#Showth~/nvidia/knavigator$#Showthe~/nvidia/knavigator$#Showthecluster~/nvidia/knavigator$#Showtheclusterinfomation~/nvidia/knavigator$k~/nvidia/knavigator$ku~/nvidia/knavigator$kub~/nvidia/knavigator$kube~/nvidia/knavigator$kubec~/nvidia/knavigator$kubect~/nvidia/knavigator$kubectl~/nvidia/knavigator$kubectlcluster-infoKubernetescontrolplaneisrunningathttps://127.0.0.1:58301CoreDNSisrunningathttps://127.0.0.1:58301/api/v1/namespaces/kube-system/services/kube-dns:dns/proxyTofurtherdebuganddiagnoseclusterproblems,use'kubectlcluster-infodump'.~/nvidia/knavigator$kubectlg~/nvidia/knavigator$kubectlge~/nvidia/knavigator$kubectlget~/nvidia/knavigator$kubectlgetn~/nvidia/knavigator$kubectlgetno~/nvidia/knavigator$kubectlgetnod~/nvidia/knavigator$kubectlgetnode~/nvidia/knavigator$kubectlgetnodesNAMESTATUSROLESAGEVERSIONminikubeReadycontrol-plane50mv1.30.0~/nvidia/knavigator$#Install~/nvidia/knavigator$#InstallKWOK~/nvidia/knavigator$#InstallKWOKnode~/nvidia/knavigator$#InstallKWOKnodesimulator~/nvidia/knavigator$K~/nvidia/knavigator$KW~/nvidia/knavigator$KWO~/nvidia/knavigator$KWOK~/nvidia/knavigator$KWOK_~/nvidia/knavigator$KWOK_REPO=kubernetes-sigs/kwok~/nvidia/knavigator$KWOK_LATEST_RELEASE="v0.5.2"~/nvidia/knavigator$kubectla~/nvidia/knavigator$kubectlap~/nvidia/knavigator$kubectlapp~/nvidia/knavigator$kubectlappl~/nvidia/knavigator$kubectlapply~/nvidia/knavigator$kubectlapply-~/nvidia/knavigator$kubectlapply-f~/nvidia/knavigator$kubectlapply-f"~/nvidia/knavigator$kubectlapply-f"h~/nvidia/knavigator$kubectlapply-f"ht~/nvidia/knavigator$kubectlapply-f"htt~/nvidia/knavigator$kubectlapply-f"http~/nvidia/knavigator$kubectlapply-f"https~/nvidia/knavigator$kubectlapply-f"https:~/nvidia/knavigator$kubectlapply-f"https:/~/nvidia/knavigator$kubectlapply-f"https://~/nvidia/knavigator$kubectlapply-f"https://g~/nvidia/knavigator$kubectlapply-f"https://gi~/nvidia/knavigator$kubectlapply-f"https://git~/nvidia/knavigator$kubectlapply-f"https://gith~/nvidia/knavigator$kubectlapply-f"https://githu~/nvidia/knavigator$kubectlapply-f"https://github~/nvidia/knavigator$kubectlapply-f"https://github.~/nvidia/knavigator$kubectlapply-f"https://github.c~/nvidia/knavigator$kubectlapply-f"https://github.co~/nvidia/knavigator$kubectlapply-f"https://github.com~/nvidia/knavigator$kubectlapply-f"https://github.com/~/nvidia/knavigator$kubectlapply-f"https://github.com/$~/nvidia/knavigator$kubectlapply-f"https://github.com/${~/nvidia/knavigator$kubectlapply-f"https://github.com/${K~/nvidia/knavigator$kubectlapply-f"https://github.com/${KW~/nvidia/knavigator$kubectlapply-f"https://github.com/${KWO~/nvidia/knavigator$kubectlapply-f"https://github.com/${KWOK~/nvidia/knavigator$kubectlapply-f"https://github.com/${KWOK_~/nvidia/knavigator$kubectlapply-f"https://github.com/${KWOK_R~/nvidia/knavigator$kubectlapply-f"https://github.com/${KWOK_RE~/nvidia/knavigator$kubectlapply-f"https://github.com/${KWOK_REP~/nvidia/knavigator$kubectlapply-f"https://github.com/${KWOK_REPO~/nvidia/knavigator$kubectlapply-f"https://github.com/${KWOK_REPO}~/nvidia/knavigator$kubectlapply-f"https://github.com/${KWOK_REPO}/~/nvidia/knavigator$kubectlapply-f"https://github.com/${KWOK_REPO}/r~/nvidia/knavigator$kubectlapply-f"https://github.com/${KWOK_REPO}/re~/nvidia/knavigator$kubectlapply-f"https://github.com/${KWOK_REPO}/rel~/nvidia/knavigator$kubectlapply-f"https://github.com/${KWOK_REPO}/rele~/nvidia/knavigator$kubectlapply-f"https://github.com/${KWOK_REPO}/relea~/nvidia/knavigator$kubectlapply-f"https://github.com/${KWOK_REPO}/releas~/nvidia/knavigator$kubectlapply-f"https://github.com/${KWOK_REPO}/release~/nvidia/knavigator$kubectlapply-f"https://github.com/${KWOK_REPO}/releases~/nvidia/knavigator$kubectlapply-f"https://github.com/${KWOK_REPO}/releases/~/nvidia/knavigator$kubectlapply-f"https://github.com/${KWOK_REPO}/releases/d~/nvidia/knavigator$kubectlapply-f"https://github.com/${KWOK_REPO}/releases/do~/nvidia/knavigator$kubectlapply-f"https://github.com/${KWOK_REPO}/releases/dow~/nvidia/knavigator$kubectlapply-f"https://github.com/${KWOK_REPO}/releases/down~/nvidia/knavigator$kubectlapply-f"https://github.com/${KWOK_REPO}/releases/downl~/nvidia/knavigator$kubectlapply-f"https://github.com/${KWOK_REPO}/releases/downloaadad/ad/$ad/${ad/${Kad/${KWad/${KWOad/${KWOKad/${KWOK_ad/${KWOK_Lad/${KWOK_LAad/${KWOK_LATad/${KWOK_LATEad/${KWOK_LATESad/${KWOK_LATESTad/${KWOK_LATEST_ad/${KWOK_LATEST_Rad/${KWOK_LATEST_REad/${KWOK_LATEST_RELad/${KWOK_LATEST_RELEad/${KWOK_LATEST_RELEAad/${KWOK_LATEST_RELEASad/${KWOK_LATEST_RELEASEad/${KWOK_LATEST_RELEASE}ad/${KWOK_LATEST_RELEASE}/ad/${KWOK_LATEST_RELEASE}/kwok.yaml"customresourcedefinition.apiextensions.k8s.io/attaches.kwok.x-k8s.iocreatedcustomresourcedefinition.apiextensions.k8s.io/clusterattaches.kwok.x-k8s.iocreatedcustomresourcedefinition.apiextensions.k8s.io/clusterexecs.kwok.x-k8s.iocreatedcustomresourcedefinition.apiextensions.k8s.io/clusterlogs.kwok.x-k8s.iocreatedcustomresourcedefinition.apiextensions.k8s.io/clusterportforwards.kwok.x-k8s.iocreatedcustomresourcedefinition.apiextensions.k8s.io/clusterresourceusages.kwok.x-k8s.iocreatedcustomresourcedefinition.apiextensions.k8s.io/execs.kwok.x-k8s.iocreatedcustomresourcedefinition.apiextensions.k8s.io/logs.kwok.x-k8s.iocreatedcustomresourcedefinition.apiextensions.k8s.io/metrics.kwok.x-k8s.iocreatedcustomresourcedefinition.apiextensions.k8s.io/portforwards.kwok.x-k8s.iocreatedcustomresourcedefinition.apiextensions.k8s.io/resourceusages.kwok.x-k8s.iocreatedcustomresourcedefinition.apiextensions.k8s.io/stages.kwok.x-k8s.iocreatedserviceaccount/kwok-controllercreatedclusterrole.rbac.authorization.k8s.io/kwok-controllercreatedclusterrolebinding.rbac.authorization.k8s.io/kwok-controllercreatedservice/kwok-controllercreateddeployment.apps/kwok-controllercreatedad/${KWOK_LATEST_RELEASE}/stage-fast.yaml"stage.kwok.x-k8s.io/node-heartbeat-with-leasecreatedstage.kwok.x-k8s.io/node-initializecreatedstage.kwok.x-k8s.io/pod-completecreatedstage.kwok.x-k8s.io/pod-deletecreatedstage.kwok.x-k8s.io/pod-readycreated~/nvidia/knavigator$kubectlapply-fcharts/overrides/kwok/pod-complete.ymlstage.kwok.x-k8s.io/pod-completeconfigured~/nvidia/knavigator$kubectlapply-fh~/nvidia/knavigator$kubectlapply-fht~/nvidia/knavigator$kubectlapply-fhtt~/nvidia/knavigator$kubectlapply-fhttp~/nvidia/knavigator$kubectlapply-fhttps~/nvidia/knavigator$kubectlapply-fhttps:~/nvidia/knavigator$kubectlapply-fhttps:/~/nvidia/knavigator$kubectlapply-fhttps://~/nvidia/knavigator$kubectlapply-fhttps://g~/nvidia/knavigator$kubectlapply-fhttps://gi~/nvidia/knavigator$kubectlapply-fhttps://git~/nvidia/knavigator$kubectlapply-fhttps://gith~/nvidia/knavigator$kubectlapply-fhttps://githu~/nvidia/knavigator$kubectlapply-fhttps://github~/nvidia/knavigator$kubectlapply-fhttps://github.~/nvidia/knavigator$kubectlapply-fhttps://github.c~/nvidia/knavigator$kubectlapply-fhttps://github.co~/nvidia/knavigator$kubectlapply-fhttps://github.com~/nvidia/knavigator$kubectlapply-fhttps://github.com/~/nvidia/knavigator$kubectlapply-fhttps://github.com/$~/nvidia/knavigator$kubectlapply-fhttps://github.com/${~/nvidia/knavigator$kubectlapply-fhttps://github.com/${K~/nvidia/knavigator$kubectlapply-fhttps://github.com/${KW~/nvidia/knavigator$kubectlapply-fhttps://github.com/${KWO~/nvidia/knavigator$kubectlapply-fhttps://github.com/${KWOK~/nvidia/knavigator$kubectlapply-fhttps://github.com/${KWOK_~/nvidia/knavigator$kubectlapply-fhttps://github.com/${KWOK_R~/nvidia/knavigator$kubectlapply-fhttps://github.com/${KWOK_RE~/nvidia/knavigator$kubectlapply-fhttps://github.com/${KWOK_REP~/nvidia/knavigator$kubectlapply-fhttps://github.com/${KWOK_REPO~/nvidia/knavigator$kubectlapply-fhttps://github.com/${KWOK_REPO}~/nvidia/knavigator$kubectlapply-fhttps://github.com/${KWOK_REPO}/~/nvidia/knavigator$kubectlapply-fhttps://github.com/${KWOK_REPO}/r~/nvidia/knavigator$kubectlapply-fhttps://github.com/${KWOK_REPO}/ra~/nvidia/knavigator$kubectlapply-fhttps://github.com/${KWOK_REPO}/raw~/nvidia/knavigator$kubectlapply-fhttps://github.com/${KWOK_REPO}/raw/~/nvidia/knavigator$kubectlapply-fhttps://github.com/${KWOK_REPO}/raw/m~/nvidia/knavigator$kubectlapply-fhttps://github.com/${KWOK_REPO}/raw/ma~/nvidia/knavigator$kubectlapply-fhttps://github.com/${KWOK_REPO}/raw/mai~/nvidia/knavigator$kubectlapply-fhttps://github.com/${KWOK_REPO}/raw/main~/nvidia/knavigator$kubectlapply-fhttps://github.com/${KWOK_REPO}/raw/main/~/nvidia/knavigator$kubectlapply-fhttps://github.com/${KWOK_REPO}/raw/main/k~/nvidia/knavigator$kubectlapply-fhttps://github.com/${KWOK_REPO}/raw/main/ku~/nvidia/knavigator$kubectlapply-fhttps://github.com/${KWOK_REPO}/raw/main/kus~/nvidia/knavigator$kubectlapply-fhttps://github.com/${KWOK_REPO}/raw/main/kust~/nvidia/knavigator$kubectlapply-fhttps://github.com/${KWOK_REPO}/raw/main/kusto~/nvidia/knavigator$kubectlapply-fhttps://github.com/${KWOK_REPO}/raw/main/kustom~/nvidia/knavigator$kubectlapply-fhttps://github.com/${KWOK_REPO}/raw/main/kustomizzeze/ze/sze/stze/staze/stagze/stageze/stage/ze/stage/pze/stage/poze/stage/podze/stage/pod/ze/stage/pod/cze/stage/pod/chze/stage/pod/chaze/stage/pod/chaoze/stage/pod/chaosze/stage/pod/chaos/ze/stage/pod/chaos/pze/stage/pod/chaos/poze/stage/pod/chaos/podze/stage/pod/chaos/pod-ze/stage/pod/chaos/pod-init-container-running-failed.yamlstage.kwok.x-k8s.io/pod-init-container-running-failedcreatedze/stage/pod/chaos/pod-container-running-failed.yamlstage.kwok.x-k8s.io/pod-container-running-failedcreated~/nvidia/knavigator$#Add~/nvidia/knavigator$#Addvirtual~/nvidia/knavigator$#Addvirtualnodes~/nvidia/knavigator$#Addvirtualnodesto~/nvidia/knavigator$#Addvirtualnodestothe~/nvidia/knavigator$#Addvirtualnodestothecluster~/nvidia/knavigator$helm~/nvidia/knavigator$helminstall~/nvidia/knavigator$helminstallvirtual-nodes~/nvidia/knavigator$helminstallvirtual-nodescharts/virtual-nodes~/nvidia/knavigator$helminstallvirtual-nodescharts/virtual-nodes-f~/nvidia/knavigator$helminstallvirtual-nodescharts/virtual-nodes-fcharts/virtual-nodes/values-example.yamlNAME:virtual-nodesLASTDEPLOYED:FriMay1709:36:432024NAMESPACE:defaultSTATUS:deployedREVISION:1TESTSUITE:NoneNAMESTATUSROLESAGEVERSIONminikubeReadycontrol-plane51mv1.30.0virtual-cpu.x86-0Readyagent2sfakevirtual-cpu.x86-1Readyagent2sfakevirtual-dgxa100.80g-0Readyagent2sfakevirtual-dgxh100.80g-0Readyagent2sfake~/nvidia/knavigator$#Build~/nvidia/knavigator$#BuildKnavigator~/nvidia/knavigator$make~/nvidia/knavigator$makebuildBuildingknavigator~/nvidia/knavigator$#Run~/nvidia/knavigator$#RunKnavigator~/nvidia/knavigator$#RunKnavigatorwith~/nvidia/knavigator$#RunKnavigatorwithan~/nvidia/knavigator$#RunKnavigatorwithanexample~/nvidia/knavigator$#RunKnavigatorwithanexampletest~/nvidia/knavigator$./bin/knavigator~/nvidia/knavigator$./bin/knavigator--tasks~/nvidia/knavigator$./bin/knavigator--tasksresources/tests/k8s/test-job.ymlI051709:37:10.84795689914k8s_config.go:42]"Usingexternalkubeconfig"I051709:37:10.85434489914main.go:79]"Startingtest"name="test-k8s-job"I051709:37:10.85435189914engine.go:107]"Creatingtask"name="RegisterObj"id="register"I051709:37:10.85491289914engine.go:240]"Startingtask"id="RegisterObj/register"I051709:37:10.85491689914engine.go:246]"Taskcompleted"id="RegisterObj/register"duration="500ns"I051709:37:10.85491989914engine.go:107]"Creatingtask"name="SubmitObj"id="job"I051709:37:10.85496489914engine.go:240]"Startingtask"id="SubmitObj/job"I051709:37:10.87744489914engine.go:246]"Taskcompleted"id="SubmitObj/job"duration="22.467792ms"I051709:37:10.87745389914engine.go:107]"Creatingtask"name="CheckPod"id="status"I051709:37:10.87750989914engine.go:240]"Startingtask"id="CheckPod/status"I051709:37:10.87751689914check_pod_task.go:158]"Createpodinformer"#pod=2timeout="5s"I051709:37:10.91306989914check_pod_task.go:256]"Accountedforallpods"I051709:37:10.91312789914engine.go:246]"Taskcompleted"id="CheckPod/status"duration="35.604875ms"~/nvidia/knavigator$#Showthejob~/nvidia/knavigator$#Showthejobrunning~/nvidia/knavigator$kubectlgetjobNAMESTATUSCOMPLETIONSDURATIONAGEjob1Running0/26s6s~/nvidia/knavigator$#Clean~/nvidia/knavigator$#Cleanup~/nvidia/knavigator$kubectldelete~/nvidia/knavigator$kubectldeletejob~/nvidia/knavigator$kubectldeletejobjob1job.batch"job1"deleted~/nvidia/knavigator$#That's~/nvidia/knavigator$#That'sit.~/nvidia/knavigator$#That'sit.Thank~/nvidia/knavigator$#That'sit.Thankyou!~/nvidia/knavigator$#D~/nvidia/knavigator$#De~/nvidia/knavigator$#Dem~/nvidia/knavigator$#Demo~/nvidia/knavigator$#Demo:h~/nvidia/knavigator$#Demo:ho~/nvidia/knavigator$#Demo:howt~/nvidia/knavigator$#Demo:howtoi~/nvidia/knavigator$#Demo:howtoin~/nvidia/knavigator$#Demo:howtoins~/nvidia/knavigator$#Demo:howtoinst~/nvidia/knavigator$#Demo:howtoinsta~/nvidia/knavigator$#Demo:howtoinstal~/nvidia/knavigator$#Demo:howtoinstall~/nvidia/knavigator$#Demo:howtoinstall,c~/nvidia/knavigator$#Demo:howtoinstall,co~/nvidia/knavigator$#Demo:howtoinstall,con~/nvidia/knavigator$#Demo:howtoinstall,conf~/nvidia/knavigator$#Demo:howtoinstall,confi~/nvidia/knavigator$#Demo:howtoinstall,config~/nvidia/knavigator$#Demo:howtoinstall,configu~/nvidia/knavigator$#Demo:howtoinstall,configur~/nvidia/knavigator$#Demo:howtoinstall,configurea~/nvidia/knavigator$#Demo:howtoinstall,configurean~/nvidia/knavigator$#Demo:howtoinstall,configureandu~/nvidia/knavigator$#Demo:howtoinstall,configureandus~/nvidia/knavigator$#Demo:howtoinstall,configureanduseK~/nvidia/knavigator$#Demo:howtoinstall,configureanduseKn~/nvidia/knavigator$#Demo:howtoinstall,configureanduseKnv~/nvidia/knavigator$#Demo:howtoinstall,configureanduseKnva~/nvidia/knavigator$#Demo:howtoinstall,configureanduseKnvav~/nvidia/knavigator$#Demo:howtoinstall,configureanduseKnvavi~/nvidia/knavigator$#Demo:howtoinstall,configureanduseKnvavig~/nvidia/knavigator$#Demo:howtoinstall,configureanduseKnvaviga~/nvidia/knavigator$#Demo:howtoinstall,configureanduseKnvavigat~/nvidia/knavigator$#Demo:howtoinstall,configureanduseKnvavigato~/nvidia/knavigator$#Demo:howtoinstall,configureanduseKnvavigatori~/nvidia/knavigator$#Demo:howtoinstall,configureanduseKnvavigatorinal~/nvidia/knavigator$#Demo:howtoinstall,configureanduseKnvavigatorinalo~/nvidia/knavigator$#Demo:howtoinstall,configureanduseKnvavigatorinaloc~/nvidia/knavigator$#Demo:howtoinstall,configureanduseKnvavigatorinalocakk8k8sck8sclk8scluk8sclusk8sclustk8sclustek8sclusterk8scluster,sk8scluster,suk8scluster,suck8scluster,suchak8scluster,suchasmk8scluster,suchasmik8scluster,suchasmink8scluster,suchasminik8scluster,suchasminikk8scluster,suchasminikuk8scluster,suchasminikubk8scluster,suchasminikubeok8scluster,suchasminikubeorKk8scluster,suchasminikubeorKik8scluster,suchasminikubeorKin~/nvidia/knavigator$#Showthec~/nvidia/knavigator$#Showthecl~/nvidia/knavigator$#Showtheclu~/nvidia/knavigator$#Showtheclus~/nvidia/knavigator$#Showtheclust~/nvidia/knavigator$#Showthecluste~/nvidia/knavigator$#Showtheclusteri~/nvidia/knavigator$#Showtheclusterin~/nvidia/knavigator$#Showtheclusterinf~/nvidia/knavigator$#Showtheclusterinfo~/nvidia/knavigator$#Showtheclusterinfom~/nvidia/knavigator$#Showtheclusterinfoma~/nvidia/knavigator$#Showtheclusterinfomat~/nvidia/knavigator$#Showtheclusterinfomati~/nvidia/knavigator$#Showtheclusterinfomatio~/nvidia/knavigator$kubectlc~/nvidia/knavigator$kubectlcl~/nvidia/knavigator$kubectlclu~/nvidia/knavigator$kubectlclus~/nvidia/knavigator$kubectlclust~/nvidia/knavigator$kubectlcluste~/nvidia/knavigator$kubectlcluster~/nvidia/knavigator$kubectlcluster-~/nvidia/knavigator$kubectlcluster-i~/nvidia/knavigator$kubectlcluster-in~/nvidia/knavigator$kubectlcluster-inf~/nvidia/knavigator$#I~/nvidia/knavigator$#In~/nvidia/knavigator$#Ins~/nvidia/knavigator$#Inst~/nvidia/knavigator$#Insta~/nvidia/knavigator$#Instal~/nvidia/knavigator$#InstallK~/nvidia/knavigator$#InstallKW~/nvidia/knavigator$#InstallKWO~/nvidia/knavigator$#InstallKWOKn~/nvidia/knavigator$#InstallKWOKno~/nvidia/knavigator$#InstallKWOKnod~/nvidia/knavigator$#InstallKWOKnodes~/nvidia/knavigator$#InstallKWOKnodesi~/nvidia/knavigator$#InstallKWOKnodesim~/nvidia/knavigator$#InstallKWOKnodesimu~/nvidia/knavigator$#InstallKWOKnodesimul~/nvidia/knavigator$#InstallKWOKnodesimula~/nvidia/knavigator$#InstallKWOKnodesimulat~/nvidia/knavigator$#InstallKWOKnodesimulato~/nvidia/knavigator$KWOK_R~/nvidia/knavigator$KWOK_RE~/nvidia/knavigator$KWOK_REP~/nvidia/knavigator$KWOK_REPO~/nvidia/knavigator$KWOK_REPO=~/nvidia/knavigator$KWOK_REPO=k~/nvidia/knavigator$KWOK_REPO=ku~/nvidia/knavigator$KWOK_REPO=kub~/nvidia/knavigator$KWOK_REPO=kube~/nvidia/knavigator$KWOK_REPO=kuber~/nvidia/knavigator$KWOK_REPO=kubern~/nvidia/knavigator$KWOK_REPO=kuberne~/nvidia/knavigator$KWOK_REPO=kubernet~/nvidia/knavigator$KWOK_REPO=kubernete~/nvidia/knavigator$KWOK_REPO=kubernetes~/nvidia/knavigator$KWOK_REPO=kubernetes-~/nvidia/knavigator$KWOK_REPO=kubernetes-s~/nvidia/knavigator$KWOK_REPO=kubernetes-si~/nvidia/knavigator$KWOK_REPO=kubernetes-sig~/nvidia/knavigator$KWOK_REPO=kubernetes-sigs~/nvidia/knavigator$KWOK_REPO=kubernetes-sigs/~/nvidia/knavigator$KWOK_REPO=kubernetes-sigs/k~/nvidia/knavigator$KWOK_REPO=kubernetes-sigs/kw~/nvidia/knavigator$KWOK_REPO=kubernetes-sigs/kwo~/nvidia/knavigator$KWOK_L~/nvidia/knavigator$KWOK_LA~/nvidia/knavigator$KWOK_LAT~/nvidia/knavigator$KWOK_LATE~/nvidia/knavigator$KWOK_LATES~/nvidia/knavigator$KWOK_LATEST~/nvidia/knavigator$KWOK_LATEST_~/nvidia/knavigator$KWOK_LATEST_R~/nvidia/knavigator$KWOK_LATEST_RE~/nvidia/knavigator$KWOK_LATEST_REL~/nvidia/knavigator$KWOK_LATEST_RELE~/nvidia/knavigator$KWOK_LATEST_RELEA~/nvidia/knavigator$KWOK_LATEST_RELEAS~/nvidia/knavigator$KWOK_LATEST_RELEASE~/nvidia/knavigator$KWOK_LATEST_RELEASE=~/nvidia/knavigator$KWOK_LATEST_RELEASE="~/nvidia/knavigator$KWOK_LATEST_RELEASE="v~/nvidia/knavigator$KWOK_LATEST_RELEASE="v0~/nvidia/knavigator$KWOK_LATEST_RELEASE="v0.~/nvidia/knavigator$KWOK_LATEST_RELEASE="v0.5~/nvidia/knavigator$KWOK_LATEST_RELEASE="v0.5.~/nvidia/knavigator$KWOK_LATEST_RELEASE="v0.5.2ad/${KWOK_LATEST_RELEASE}/kad/${KWOK_LATEST_RELEASE}/kwad/${KWOK_LATEST_RELEASE}/kwoad/${KWOK_LATEST_RELEASE}/kwokad/${KWOK_LATEST_RELEASE}/kwok.ad/${KWOK_LATEST_RELEASE}/kwok.yad/${KWOK_LATEST_RELEASE}/kwok.yaad/${KWOK_LATEST_RELEASE}/kwok.yamad/${KWOK_LATEST_RELEASE}/kwok.yamlad/${KWOK_LATEST_RELEASE}/sad/${KWOK_LATEST_RELEASE}/stad/${KWOK_LATEST_RELEASE}/staad/${KWOK_LATEST_RELEASE}/stagad/${KWOK_LATEST_RELEASE}/stagead/${KWOK_LATEST_RELEASE}/stage-ad/${KWOK_LATEST_RELEASE}/stage-fad/${KWOK_LATEST_RELEASE}/stage-faad/${KWOK_LATEST_RELEASE}/stage-fasad/${KWOK_LATEST_RELEASE}/stage-fastad/${KWOK_LATEST_RELEASE}/stage-fast.ad/${KWOK_LATEST_RELEASE}/stage-fast.yad/${KWOK_LATEST_RELEASE}/stage-fast.yaad/${KWOK_LATEST_RELEASE}/stage-fast.yamad/${KWOK_LATEST_RELEASE}/stage-fast.yaml~/nvidia/knavigator$kubectlapply-fc~/nvidia/knavigator$kubectlapply-fch~/nvidia/knavigator$kubectlapply-fcha~/nvidia/knavigator$kubectlapply-fchar~/nvidia/knavigator$kubectlapply-fchart~/nvidia/knavigator$kubectlapply-fcharts~/nvidia/knavigator$kubectlapply-fcharts/~/nvidia/knavigator$kubectlapply-fcharts/o~/nvidia/knavigator$kubectlapply-fcharts/ov~/nvidia/knavigator$kubectlapply-fcharts/ove~/nvidia/knavigator$kubectlapply-fcharts/over~/nvidia/knavigator$kubectlapply-fcharts/overr~/nvidia/knavigator$kubectlapply-fcharts/overri~/nvidia/knavigator$kubectlapply-fcharts/overrid~/nvidia/knavigator$kubectlapply-fcharts/override~/nvidia/knavigator$kubectlapply-fcharts/overrides~/nvidia/knavigator$kubectlapply-fcharts/overrides/~/nvidia/knavigator$kubectlapply-fcharts/overrides/k~/nvidia/knavigator$kubectlapply-fcharts/overrides/kw~/nvidia/knavigator$kubectlapply-fcharts/overrides/kwo~/nvidia/knavigator$kubectlapply-fcharts/overrides/kwok~/nvidia/knavigator$kubectlapply-fcharts/overrides/kwok/~/nvidia/knavigator$kubectlapply-fcharts/overrides/kwok/p~/nvidia/knavigator$kubectlapply-fcharts/overrides/kwok/po~/nvidia/knavigator$kubectlapply-fcharts/overrides/kwok/pod~/nvidia/knavigator$kubectlapply-fcharts/overrides/kwok/pod-~/nvidia/knavigator$kubectlapply-fcharts/overrides/kwok/pod-c~/nvidia/knavigator$kubectlapply-fcharts/overrides/kwok/pod-co~/nvidia/knavigator$kubectlapply-fcharts/overrides/kwok/pod-com~/nvidia/knavigator$kubectlapply-fcharts/overrides/kwok/pod-comp~/nvidia/knavigator$kubectlapply-fcharts/overrides/kwok/pod-compl~/nvidia/knavigator$kubectlapply-fcharts/overrides/kwok/pod-comple~/nvidia/knavigator$kubectlapply-fcharts/overrides/kwok/pod-complet~/nvidia/knavigator$kubectlapply-fcharts/overrides/kwok/pod-complete~/nvidia/knavigator$kubectlapply-fcharts/overrides/kwok/pod-complete.~/nvidia/knavigator$kubectlapply-fcharts/overrides/kwok/pod-complete.y~/nvidia/knavigator$kubectlapply-fcharts/overrides/kwok/pod-complete.ymze/stage/pod/chaos/pod-ize/stage/pod/chaos/pod-inze/stage/pod/chaos/pod-inize/stage/pod/chaos/pod-initze/stage/pod/chaos/pod-init-ze/stage/pod/chaos/pod-init-cze/stage/pod/chaos/pod-init-coze/stage/pod/chaos/pod-init-conze/stage/pod/chaos/pod-init-contze/stage/pod/chaos/pod-init-contaze/stage/pod/chaos/pod-init-contaize/stage/pod/chaos/pod-init-containze/stage/pod/chaos/pod-init-containeze/stage/pod/chaos/pod-init-containerze/stage/pod/chaos/pod-init-container-ze/stage/pod/chaos/pod-init-container-rze/stage/pod/chaos/pod-init-container-ruze/stage/pod/chaos/pod-init-container-runze/stage/pod/chaos/pod-init-container-runnze/stage/pod/chaos/pod-init-container-runnize/stage/pod/chaos/pod-init-container-runninze/stage/pod/chaos/pod-init-container-runningze/stage/pod/chaos/pod-init-container-running-ze/stage/pod/chaos/pod-init-container-running-fze/stage/pod/chaos/pod-init-container-running-faze/stage/pod/chaos/pod-init-container-running-faize/stage/pod/chaos/pod-init-container-running-failze/stage/pod/chaos/pod-init-container-running-faileze/stage/pod/chaos/pod-init-container-running-failedze/stage/pod/chaos/pod-init-container-running-failed.ze/stage/pod/chaos/pod-init-container-running-failed.yze/stage/pod/chaos/pod-init-container-running-failed.yaze/stage/pod/chaos/pod-init-container-running-failed.yamze/stage/pod/chaos/pod-cze/stage/pod/chaos/pod-coze/stage/pod/chaos/pod-conze/stage/pod/chaos/pod-contze/stage/pod/chaos/pod-contaze/stage/pod/chaos/pod-contaize/stage/pod/chaos/pod-containze/stage/pod/chaos/pod-containeze/stage/pod/chaos/pod-containerze/stage/pod/chaos/pod-container-ze/stage/pod/chaos/pod-container-rze/stage/pod/chaos/pod-container-ruze/stage/pod/chaos/pod-container-runze/stage/pod/chaos/pod-container-runnze/stage/pod/chaos/pod-container-runnize/stage/pod/chaos/pod-container-runninze/stage/pod/chaos/pod-container-runningze/stage/pod/chaos/pod-container-running-ze/stage/pod/chaos/pod-container-running-fze/stage/pod/chaos/pod-container-running-faze/stage/pod/chaos/pod-container-running-faize/stage/pod/chaos/pod-container-running-failze/stage/pod/chaos/pod-container-running-faileze/stage/pod/chaos/pod-container-running-failedze/stage/pod/chaos/pod-container-running-failed.ze/stage/pod/chaos/pod-container-running-failed.yze/stage/pod/chaos/pod-container-running-failed.yaze/stage/pod/chaos/pod-container-running-failed.yam~/nvidia/knavigator$#A~/nvidia/knavigator$#Ad~/nvidia/knavigator$#Addv~/nvidia/knavigator$#Addvi~/nvidia/knavigator$#Addvir~/nvidia/knavigator$#Addvirt~/nvidia/knavigator$#Addvirtu~/nvidia/knavigator$#Addvirtua~/nvidia/knavigator$#Addvirtualn~/nvidia/knavigator$#Addvirtualno~/nvidia/knavigator$#Addvirtualnod~/nvidia/knavigator$#Addvirtualnode~/nvidia/knavigator$#Addvirtualnodest~/nvidia/knavigator$#Addvirtualnodestot~/nvidia/knavigator$#Addvirtualnodestoth~/nvidia/knavigator$#Addvirtualnodestothec~/nvidia/knavigator$#Addvirtualnodestothecl~/nvidia/knavigator$#Addvirtualnodestotheclu~/nvidia/knavigator$#Addvirtualnodestotheclus~/nvidia/knavigator$#Addvirtualnodestotheclust~/nvidia/knavigator$#Addvirtualnodestothecluste~/nvidia/knavigator$h~/nvidia/knavigator$he~/nvidia/knavigator$hel~/nvidia/knavigator$helmi~/nvidia/knavigator$helmin~/nvidia/knavigator$helmins~/nvidia/knavigator$helminst~/nvidia/knavigator$helminsta~/nvidia/knavigator$helminstal~/nvidia/knavigator$helminstallv~/nvidia/knavigator$helminstallvi~/nvidia/knavigator$helminstallvir~/nvidia/knavigator$helminstallvirt~/nvidia/knavigator$helminstallvirtu~/nvidia/knavigator$helminstallvirtua~/nvidia/knavigator$helminstallvirtual~/nvidia/knavigator$helminstallvirtual-~/nvidia/knavigator$helminstallvirtual-n~/nvidia/knavigator$helminstallvirtual-no~/nvidia/knavigator$helminstallvirtual-nod~/nvidia/knavigator$helminstallvirtual-node~/nvidia/knavigator$helminstallvirtual-nodesc~/nvidia/knavigator$helminstallvirtual-nodesch~/nvidia/knavigator$helminstallvirtual-nodescha~/nvidia/knavigator$helminstallvirtual-nodeschar~/nvidia/knavigator$helminstallvirtual-nodeschart~/nvidia/knavigator$helminstallvirtual-nodescharts~/nvidia/knavigator$helminstallvirtual-nodescharts/~/nvidia/knavigator$helminstallvirtual-nodescharts/v~/nvidia/knavigator$helminstallvirtual-nodescharts/vi~/nvidia/knavigator$helminstallvirtual-nodescharts/vir~/nvidia/knavigator$helminstallvirtual-nodescharts/virt~/nvidia/knavigator$helminstallvirtual-nodescharts/virtu~/nvidia/knavigator$helminstallvirtual-nodescharts/virtua~/nvidia/knavigator$helminstallvirtual-nodescharts/virtual~/nvidia/knavigator$helminstallvirtual-nodescharts/virtual-~/nvidia/knavigator$helminstallvirtual-nodescharts/virtual-n~/nvidia/knavigator$helminstallvirtual-nodescharts/virtual-no~/nvidia/knavigator$helminstallvirtual-nodescharts/virtual-nod~/nvidia/knavigator$helminstallvirtual-nodescharts/virtual-node~/nvidia/knavigator$helminstallvirtual-nodescharts/virtual-nodes-~/nvidia/knavigator$helminstallvirtual-nodescharts/virtual-nodes-fc~/nvidia/knavigator$helminstallvirtual-nodescharts/virtual-nodes-fch~/nvidia/knavigator$helminstallvirtual-nodescharts/virtual-nodes-fcha~/nvidia/knavigator$helminstallvirtual-nodescharts/virtual-nodes-fchar~/nvidia/knavigator$helminstallvirtual-nodescharts/virtual-nodes-fchart~/nvidia/knavigator$helminstallvirtual-nodescharts/virtual-nodes-fcharts~/nvidia/knavigator$helminstallvirtual-nodescharts/virtual-nodes-fcharts/~/nvidia/knavigator$helminstallvirtual-nodescharts/virtual-nodes-fcharts/v~/nvidia/knavigator$helminstallvirtual-nodescharts/virtual-nodes-fcharts/vi~/nvidia/knavigator$helminstallvirtual-nodescharts/virtual-nodes-fcharts/vir~/nvidia/knavigator$helminstallvirtual-nodescharts/virtual-nodes-fcharts/virt~/nvidia/knavigator$helminstallvirtual-nodescharts/virtual-nodes-fcharts/virtu~/nvidia/knavigator$helminstallvirtual-nodescharts/virtual-nodes-fcharts/virtua--n-no-nod-node-nodes-nodes/-nodes/v-nodes/va-nodes/val-nodes/valu-nodes/value-nodes/values-nodes/values--nodes/values-e-nodes/values-ex-nodes/values-exa-nodes/values-exam-nodes/values-examp-nodes/values-exampl-nodes/values-example-nodes/values-example.-nodes/values-example.y-nodes/values-example.ya-nodes/values-example.yamvirtual-cpu.x86-1~/nvidia/knavigator$#B~/nvidia/knavigator$#Bu~/nvidia/knavigator$#Bui~/nvidia/knavigator$#Buil~/nvidia/knavigator$#BuildK~/nvidia/knavigator$#BuildKn~/nvidia/knavigator$#BuildKna~/nvidia/knavigator$#BuildKnav~/nvidia/knavigator$#BuildKnavi~/nvidia/knavigator$#BuildKnavig~/nvidia/knavigator$#BuildKnaviga~/nvidia/knavigator$#BuildKnavigat~/nvidia/knavigator$#BuildKnavigato~/nvidia/knavigator$m~/nvidia/knavigator$ma~/nvidia/knavigator$mak~/nvidia/knavigator$makeb~/nvidia/knavigator$makebu~/nvidia/knavigator$makebui~/nvidia/knavigator$makebuil~/nvidia/knavigator$#R~/nvidia/knavigator$#Ru~/nvidia/knavigator$#RunK~/nvidia/knavigator$#RunKn~/nvidia/knavigator$#RunKna~/nvidia/knavigator$#RunKnav~/nvidia/knavigator$#RunKnavi~/nvidia/knavigator$#RunKnavig~/nvidia/knavigator$#RunKnaviga~/nvidia/knavigator$#RunKnavigat~/nvidia/knavigator$#RunKnavigato~/nvidia/knavigator$#RunKnavigatorw~/nvidia/knavigator$#RunKnavigatorwi~/nvidia/knavigator$#RunKnavigatorwit~/nvidia/knavigator$#RunKnavigatorwitha~/nvidia/knavigator$#RunKnavigatorwithane~/nvidia/knavigator$#RunKnavigatorwithanex~/nvidia/knavigator$#RunKnavigatorwithanexa~/nvidia/knavigator$#RunKnavigatorwithanexam~/nvidia/knavigator$#RunKnavigatorwithanexamp~/nvidia/knavigator$#RunKnavigatorwithanexampl~/nvidia/knavigator$#RunKnavigatorwithanexamplet~/nvidia/knavigator$#RunKnavigatorwithanexamplete~/nvidia/knavigator$#RunKnavigatorwithanexampletes~/nvidia/knavigator$.~/nvidia/knavigator$./~/nvidia/knavigator$./b~/nvidia/knavigator$./bi~/nvidia/knavigator$./bin~/nvidia/knavigator$./bin/~/nvidia/knavigator$./bin/k~/nvidia/knavigator$./bin/kn~/nvidia/knavigator$./bin/kna~/nvidia/knavigator$./bin/knav~/nvidia/knavigator$./bin/knavi~/nvidia/knavigator$./bin/knavig~/nvidia/knavigator$./bin/knaviga~/nvidia/knavigator$./bin/knavigat~/nvidia/knavigator$./bin/knavigato~/nvidia/knavigator$./bin/knavigator-~/nvidia/knavigator$./bin/knavigator--~/nvidia/knavigator$./bin/knavigator--t~/nvidia/knavigator$./bin/knavigator--ta~/nvidia/knavigator$./bin/knavigator--tas~/nvidia/knavigator$./bin/knavigator--task~/nvidia/knavigator$./bin/knavigator--tasksr~/nvidia/knavigator$./bin/knavigator--tasksre~/nvidia/knavigator$./bin/knavigator--tasksres~/nvidia/knavigator$./bin/knavigator--tasksreso~/nvidia/knavigator$./bin/knavigator--tasksresou~/nvidia/knavigator$./bin/knavigator--tasksresour~/nvidia/knavigator$./bin/knavigator--tasksresourc~/nvidia/knavigator$./bin/knavigator--tasksresource~/nvidia/knavigator$./bin/knavigator--tasksresources~/nvidia/knavigator$./bin/knavigator--tasksresources/~/nvidia/knavigator$./bin/knavigator--tasksresources/t~/nvidia/knavigator$./bin/knavigator--tasksresources/te~/nvidia/knavigator$./bin/knavigator--tasksresources/tes~/nvidia/knavigator$./bin/knavigator--tasksresources/test~/nvidia/knavigator$./bin/knavigator--tasksresources/tests~/nvidia/knavigator$./bin/knavigator--tasksresources/tests/~/nvidia/knavigator$./bin/knavigator--tasksresources/tests/k~/nvidia/knavigator$./bin/knavigator--tasksresources/tests/k8~/nvidia/knavigator$./bin/knavigator--tasksresources/tests/k8s~/nvidia/knavigator$./bin/knavigator--tasksresources/tests/k8s/~/nvidia/knavigator$./bin/knavigator--tasksresources/tests/k8s/t~/nvidia/knavigator$./bin/knavigator--tasksresources/tests/k8s/te~/nvidia/knavigator$./bin/knavigator--tasksresources/tests/k8s/tes~/nvidia/knavigator$./bin/knavigator--tasksresources/tests/k8s/test~/nvidia/knavigator$./bin/knavigator--tasksresources/tests/k8s/test-~/nvidia/knavigator$./bin/knavigator--tasksresources/tests/k8s/test-j~/nvidia/knavigator$./bin/knavigator--tasksresources/tests/k8s/test-jo~/nvidia/knavigator$./bin/knavigator--tasksresources/tests/k8s/test-job~/nvidia/knavigator$./bin/knavigator--tasksresources/tests/k8s/test-job.~/nvidia/knavigator$./bin/knavigator--tasksresources/tests/k8s/test-job.y~/nvidia/knavigator$./bin/knavigator--tasksresources/tests/k8s/test-job.ym~/nvidia/knavigator$#Showthej~/nvidia/knavigator$#Showthejo~/nvidia/knavigator$#Showthejobr~/nvidia/knavigator$#Showthejobru~/nvidia/knavigator$#Showthejobrun~/nvidia/knavigator$#Showthejobrunn~/nvidia/knavigator$#Showthejobrunni~/nvidia/knavigator$#Showthejobrunnin~/nvidia/knavigator$kubectlgetj~/nvidia/knavigator$kubectlgetjo~/nvidia/knavigator$#C~/nvidia/knavigator$#Cl~/nvidia/knavigator$#Cle~/nvidia/knavigator$#Clea~/nvidia/knavigator$#Cleanu~/nvidia/knavigator$kubectld~/nvidia/knavigator$kubectlde~/nvidia/knavigator$kubectldel~/nvidia/knavigator$kubectldele~/nvidia/knavigator$kubectldelet~/nvidia/knavigator$kubectldeletej~/nvidia/knavigator$kubectldeletejo~/nvidia/knavigator$kubectldeletejobj~/nvidia/knavigator$kubectldeletejobjo~/nvidia/knavigator$kubectldeletejobjob~/nvidia/knavigator$#T~/nvidia/knavigator$#Th~/nvidia/knavigator$#Tha~/nvidia/knavigator$#That~/nvidia/knavigator$#That'~/nvidia/knavigator$#That'si~/nvidia/knavigator$#That'sit~/nvidia/knavigator$#That'sit.T~/nvidia/knavigator$#That'sit.Th~/nvidia/knavigator$#That'sit.Tha~/nvidia/knavigator$#That'sit.Than~/nvidia/knavigator$#That'sit.Thanky~/nvidia/knavigator$#That'sit.Thankyo~/nvidia/knavigator$#That'sit.Thankyou \ No newline at end of file diff --git a/hack/democtl.sh b/hack/democtl.sh deleted file mode 100755 index a56ab7e2..00000000 --- a/hack/democtl.sh +++ /dev/null @@ -1,381 +0,0 @@ -#!/usr/bin/env bash -# Copyright 2024 The Kubernetes Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -o errexit -set -o nounset -set -o pipefail - -SIMULATE=false -COLS=86 -ROWS=24 -SVG_TERM="" -SVG_PROFILE="" - -function color() { - local color="${1}" - local text="${2}" - echo -e "\033[1;${color}m${text}\033[0m" -} - -export PLAY_PS1="$ " - -CACHE_DIR=${TMPDIR:-/tmp}/democtl -SELFPATH="$(realpath "$0")" -ARGS=() - -export PYTHONPATH="${CACHE_DIR}/py_modules" -export PATH="${PYTHONPATH}/bin:${CACHE_DIR}/node_modules/.bin:${PATH}:${PATH}" - -function usage() { - echo "Usage: ${0} [--help] [options...]" - echo " input file" - echo " output file" - echo " --help show this help" - echo " --cols=${COLS} cols of the terminal" - echo " --rows=${ROWS} rows of the terminal" - echo " --ps1=${PLAY_PS1} ps1 of the recording" - echo " --term=${SVG_TERM} terminal type" - echo " --profile=${SVG_PROFILE} terminal profile" -} - -# args parses the arguments. -function args() { - local arg - - while [[ $# -gt 0 ]]; do - arg="$1" - case "${arg}" in - --internal-simulate) - SIMULATE="true" - shift - ;; - --cols | --cols=*) - [[ "${arg#*=}" != "${arg}" ]] && COLS="${arg#*=}" || { COLS="${2}" && shift; } || : - shift - ;; - --rows | --rows=*) - [[ "${arg#*=}" != "${arg}" ]] && ROWS="${arg#*=}" || { ROWS="${2}" && shift; } || : - shift - ;; - --ps1 | --ps1=*) - [[ "${arg#*=}" != "${arg}" ]] && PLAY_PS1="${arg#*=}" || { PLAY_PS1="${2}" && shift; } || : - shift - ;; - --term | --term=*) - [[ "${arg#*=}" != "${arg}" ]] && SVG_TERM="${arg#*=}" || { SVG_TERM="${2}" && shift; } || : - shift - ;; - --profile | --profile=*) - [[ "${arg#*=}" != "${arg}" ]] && SVG_PROFILE="${arg#*=}" || { SVG_PROFILE="${2}" && shift; } || : - shift - ;; - --help) - usage - exit 0 - ;; - --*) - echo "Unknown argument: ${arg}" - usage - exit 1 - ;; - *) - ARGS+=("${arg}") - shift - ;; - esac - done -} - -# command_exist checks if the command exists. -function command_exist() { - local command="${1}" - type "${command}" >/dev/null 2>&1 -} - -# install_asciinema installs asciinema. -function install_asciinema() { - if command_exist asciinema; then - return 0 - elif command_exist pip3; then - pip3 install asciinema --target "${PYTHONPATH}" >&2 - else - echo "asciinema is not installed" >&2 - return 1 - fi -} - -# install_svg_term_cli installs svg-term-cli. -function install_svg_term_cli() { - if command_exist svg-term; then - return 0 - elif command_exist npm; then - npm install --save-dev svg-term-cli --prefix "${CACHE_DIR}" >&2 - else - echo "svg-term is not installed" >&2 - return 1 - fi -} - -# install_svg_to_video installs svg-to-video. -function install_svg_to_video() { - if command_exist svg-to-video; then - return 0 - elif command_exist npm; then - npm install --save-dev https://github.com/wzshiming/svg-to-video --prefix "${CACHE_DIR}" >&2 - else - echo "svg-to-video is not installed" >&2 - return 1 - fi -} - -# ext_file returns the extension of the input file. -function ext_file() { - local file="${1}" - echo "${file##*.}" -} - -# ext_replace replaces the extension of the input file with the output extension. -function ext_replace() { - local file="${1}" - local ext="${2}" - echo "${file%.*}.${ext}" -} - -# demo2cast converts the input demo file to the output cast file. -function demo2cast() { - local input="${1}" - local output="${2}" - echo "Recording ${input} to ${output}" >&2 - - asciinema rec \ - "${output}" \ - --overwrite \ - --cols "${COLS}" \ - --rows "${ROWS}" \ - --env "" \ - --command "bash ${SELFPATH} ${input} --internal-simulate --ps1='${PLAY_PS1}'" -} - -# cast2svg converts the input cast file to the output svg file. -function cast2svg() { - local input="${1}" - local output="${2}" - local args=() - echo "Converting ${input} to ${output}" >&2 - - if [[ "${SVG_TERM}" != "" ]]; then - args+=("--term" "${SVG_TERM}") - fi - - if [[ "${SVG_PROFILE}" != "" ]]; then - args+=("--profile" "${SVG_PROFILE}") - fi - svg-term \ - --in "${input}" \ - --out "${output}" \ - --window \ - "${args[@]}" -} - -# svg2video converts the input svg file to the output video file. -function svg2video() { - local input="${1}" - local output="${2}" - echo "Converting ${input} to ${output}" >&2 - - svg-to-video \ - "${input}" \ - "${output}" \ - --delay-start 5 \ - --headless -} - -# convert converts the input file to the output file. -# The input file can be a demo, cast, or svg file. -# The output file can be a cast, svg, or mp4 file. -function convert() { - local input="${1}" - local output="${2}" - - local castfile - local viedofile - - local outext - local inext - - outext=$(ext_file "${output}") - inext=$(ext_file "${input}") - case "${outext}" in - cast) - case "${inext}" in - demo) - install_asciinema - - demo2cast "${input}" "${output}" - return 0 - ;; - *) - echo "Unsupported input file type: ${inext}" - return 1 - ;; - esac - ;; - svg) - case "${inext}" in - cast) - install_svg_term_cli - - cast2svg "${input}" "${output}" - return 0 - ;; - demo) - install_asciinema - install_svg_term_cli - - castfile=$(ext_replace "${output}" "cast") - demo2cast "${input}" "${castfile}" - cast2svg "${castfile}" "${output}" - return 0 - ;; - *) - echo "Unsupported input file type: ${inext}" - return 1 - ;; - esac - ;; - mp4) - case "${inext}" in - svg) - install_svg_to_video - - svg2video "${input}" "${output}" - return 0 - ;; - cast) - install_svg_term_cli - install_svg_to_video - - viedofile=$(ext_replace "${output}" "svg") - cast2svg "${input}" "${viedofile}" - svg2video "${viedofile}" "${output}" - return 0 - ;; - demo) - install_asciinema - install_svg_term_cli - install_svg_to_video - - viedofile=$(ext_replace "${output}" "svg") - castfile=$(ext_replace "${output}" "cast") - demo2cast "${input}" "${castfile}" - cast2svg "${castfile}" "${viedofile}" - svg2video "${viedofile}" "${output}" - return 0 - ;; - *) - echo "Unsupported input file type: ${inext}" - return 1 - ;; - esac - ;; - *) - echo "Unsupported output file type: ${outext}" - return 1 - ;; - esac -} - -# br prints a new line. -# this function is used to simulate typing. -function br() { - echo -} - -# ps1 prints the ps1 with a delay. -# this function is used to simulate typing. -function ps1() { - local delay="${1}" - echo -e -n "${PLAY_PS1}" - if [[ "${delay}" != "" ]]; then - sleep "${delay}" - fi -} - -# type_message prints a message to stdout at a human hand speed. -# this function is used to simulate typing. -function type_message() { - local message="$1" - local delay="${2:-0.02}" - local entry_delay="${3:-0.1}" - for ((i = 0; i < ${#message}; i++)); do - echo -n "${message:$i:1}" - sleep "${delay}" - done - sleep "${entry_delay}" - br -} - -# type_and_exec_command prints a command to stdout and executes it. -# this function is used to simulate typing. -function type_and_exec_command() { - local command="$*" - type_message "${command}" 0.01 0.5 - eval "${command}" -} - -# play_file plays a file line by line. -# this function is used to simulate typing. -function play_file() { - local file="$1" - while read -r line; do - if [[ "${line}" =~ ^# ]]; then - ps1 0.5 - type_message "${line}" - elif [[ "${line}" == "" ]]; then - ps1 2 - br - else - ps1 1 - type_and_exec_command "${line}" - fi - done <"${file}" -} - -function main() { - if [[ "${#ARGS[*]}" -lt 1 ]]; then - usage - exit 1 - fi - - INPUT_FILE="${ARGS[0]}" - - # Only for asciinema recording command. - if [[ "${SIMULATE}" == "true" ]]; then - play_file "${INPUT_FILE}" - exit 0 - fi - - if [[ "${#ARGS[*]}" -gt 1 ]]; then - OUTPUT_FILE="${ARGS[1]}" - else - # If the output file is not specified, use the same name as the input file. - OUTPUT_FILE="$(ext_replace "${INPUT_FILE}" "svg")" - fi - - convert "${INPUT_FILE}" "${OUTPUT_FILE}" -} - -args "$@" -main