diff --git a/images/virt-launcher/vlctl/Taskfile.yaml b/images/virt-launcher/vlctl/Taskfile.yaml index f986504915..59d736e84c 100644 --- a/images/virt-launcher/vlctl/Taskfile.yaml +++ b/images/virt-launcher/vlctl/Taskfile.yaml @@ -13,3 +13,12 @@ tasks: cmds: - mkdir -p bin - go build -o bin/vlctl cmd/vlctl/main.go + + gen-proto: + desc: Generate Go code from proto files + cmds: + - mkdir -p pkg/api/generated + - mkdir -p pkg/api/generated/cmd + - mkdir -p pkg/api/generated/info + - protoc --go_out=pkg/api/generated/cmd --go_opt=paths=source_relative --go-grpc_out=pkg/api/generated/cmd --go-grpc_opt=paths=source_relative proto/cmd.proto + - protoc --go_out=pkg/api/generated/info --go_opt=paths=source_relative --go-grpc_out=pkg/api/generated/info --go-grpc_opt=paths=source_relative proto/info.proto diff --git a/images/virt-launcher/vlctl/cmd/vlctl/app/base.go b/images/virt-launcher/vlctl/cmd/vlctl/app/base.go index fd67664e64..c181c5937b 100644 --- a/images/virt-launcher/vlctl/cmd/vlctl/app/base.go +++ b/images/virt-launcher/vlctl/cmd/vlctl/app/base.go @@ -25,7 +25,8 @@ import ( "github.com/spf13/cobra" "github.com/spf13/pflag" "gopkg.in/yaml.v3" - cmdclient "kubevirt.io/kubevirt/pkg/virt-handler/cmd-client" + + "vlctl/pkg/client" ) const ( @@ -64,8 +65,8 @@ func (o *BaseOptions) Validate() error { return nil } -func (o *BaseOptions) Client() (cmdclient.LauncherClient, error) { - return cmdclient.NewClient(o.Socket) +func (o *BaseOptions) Client() (client.LauncherClient, error) { + return client.NewClient(o.Socket) } func (o *BaseOptions) MarshalOutput(v interface{}) ([]byte, error) { diff --git a/images/virt-launcher/vlctl/cmd/vlctl/app/domain.go b/images/virt-launcher/vlctl/cmd/vlctl/app/domain.go index 81fa853136..002ae4a155 100644 --- a/images/virt-launcher/vlctl/cmd/vlctl/app/domain.go +++ b/images/virt-launcher/vlctl/cmd/vlctl/app/domain.go @@ -46,6 +46,7 @@ func runDomainCommand(opts BaseOptions) error { if err != nil { return fmt.Errorf("failed to create client: %w", err) } + defer client.Close() domain, exist, err := client.GetDomain() if err != nil { @@ -81,13 +82,13 @@ func runDomainStatsCommand(opts BaseOptions) error { if err != nil { return fmt.Errorf("failed to create client: %w", err) } + defer client.Close() - stats, exist, err := client.GetDomainStats() + stats, exists, err := client.GetDomainStats() if err != nil { return fmt.Errorf("failed to get domain stats: %w", err) } - - if !exist { + if !exists { return fmt.Errorf("domain stats does not exist") } diff --git a/images/virt-launcher/vlctl/cmd/vlctl/app/guest.go b/images/virt-launcher/vlctl/cmd/vlctl/app/guest.go index 0e88943bb6..b4f64be541 100644 --- a/images/virt-launcher/vlctl/cmd/vlctl/app/guest.go +++ b/images/virt-launcher/vlctl/cmd/vlctl/app/guest.go @@ -60,6 +60,7 @@ func runGuestInfoCommand(opts BaseOptions) error { if err != nil { return fmt.Errorf("failed to create client: %w", err) } + defer client.Close() info, err := client.GetGuestInfo() if err != nil { @@ -120,6 +121,7 @@ func runGuestFilesystemsCommand(opts BaseOptions) error { if err != nil { return fmt.Errorf("failed to create client: %w", err) } + defer client.Close() filesystems, err := client.GetFilesystems() if err != nil { @@ -156,6 +158,7 @@ func runGuestPingCommand(opts BaseOptions, timeout int32) error { if err != nil { return fmt.Errorf("failed to create client: %w", err) } + defer client.Close() domain, exist, err := client.GetDomain() if err != nil { diff --git a/images/virt-launcher/vlctl/cmd/vlctl/app/ping.go b/images/virt-launcher/vlctl/cmd/vlctl/app/ping.go index c89c96f61b..737ae9cd62 100644 --- a/images/virt-launcher/vlctl/cmd/vlctl/app/ping.go +++ b/images/virt-launcher/vlctl/cmd/vlctl/app/ping.go @@ -44,6 +44,7 @@ func runPingCommand(opts BaseOptions) error { if err != nil { return fmt.Errorf("failed to create client: %w", err) } + defer client.Close() err = client.Ping() if err != nil { diff --git a/images/virt-launcher/vlctl/cmd/vlctl/app/qemu.go b/images/virt-launcher/vlctl/cmd/vlctl/app/qemu.go index debdb97ae6..739f5bda12 100644 --- a/images/virt-launcher/vlctl/cmd/vlctl/app/qemu.go +++ b/images/virt-launcher/vlctl/cmd/vlctl/app/qemu.go @@ -54,6 +54,7 @@ func runQemuVersionCommand(opts BaseOptions) error { if err != nil { return fmt.Errorf("failed to create client: %w", err) } + defer client.Close() version, err := client.GetQemuVersion() if err != nil { diff --git a/images/virt-launcher/vlctl/cmd/vlctl/app/sev.go b/images/virt-launcher/vlctl/cmd/vlctl/app/sev.go index 08ab148079..058394ecfe 100644 --- a/images/virt-launcher/vlctl/cmd/vlctl/app/sev.go +++ b/images/virt-launcher/vlctl/cmd/vlctl/app/sev.go @@ -44,6 +44,7 @@ func runSevCommand(opts BaseOptions) error { if err != nil { return fmt.Errorf("failed to create client: %w", err) } + defer client.Close() info, err := client.GetSEVInfo() if err != nil { diff --git a/images/virt-launcher/vlctl/go.mod b/images/virt-launcher/vlctl/go.mod index e7f58ff103..38c69349ea 100644 --- a/images/virt-launcher/vlctl/go.mod +++ b/images/virt-launcher/vlctl/go.mod @@ -5,17 +5,16 @@ go 1.24.6 require ( github.com/spf13/cobra v1.9.1 github.com/spf13/pflag v1.0.6 + google.golang.org/grpc v1.65.0 + google.golang.org/protobuf v1.36.1 gopkg.in/yaml.v3 v3.0.1 - kubevirt.io/kubevirt v1.6.1 + kubevirt.io/api v0.0.0-20250930144221-aaa67e9803df ) require ( github.com/fxamacker/cbor/v2 v2.7.0 // indirect - github.com/go-kit/log v0.2.1 // indirect - github.com/go-logfmt/logfmt v0.6.0 // indirect github.com/go-logr/logr v1.4.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/protobuf v1.5.4 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/uuid v1.6.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect @@ -24,21 +23,16 @@ require ( github.com/modern-go/reflect2 v1.0.2 // indirect github.com/openshift/custom-resource-status v1.1.2 // indirect github.com/x448/float16 v0.8.4 // indirect - go.uber.org/mock v0.5.1 // indirect golang.org/x/net v0.38.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.25.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240826202546-f6391c0de4c7 // indirect - google.golang.org/grpc v1.65.0 // indirect - google.golang.org/protobuf v1.36.1 // indirect gopkg.in/inf.v0 v0.9.1 // indirect k8s.io/api v0.32.5 // indirect k8s.io/apiextensions-apiserver v0.32.5 // indirect k8s.io/apimachinery v0.32.5 // indirect k8s.io/klog/v2 v2.130.1 // indirect k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 // indirect - kubevirt.io/api v0.0.0-20250930144221-aaa67e9803df // indirect - kubevirt.io/client-go v0.0.0-00010101000000-000000000000 // indirect kubevirt.io/containerized-data-importer-api v1.60.3-0.20241105012228-50fbed985de9 // indirect kubevirt.io/controller-lifecycle-operator-sdk/api v0.0.0-20220329064328-f3cc58c6ed90 // indirect sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect diff --git a/images/virt-launcher/vlctl/go.sum b/images/virt-launcher/vlctl/go.sum index c776252305..fec8cafa44 100644 --- a/images/virt-launcher/vlctl/go.sum +++ b/images/virt-launcher/vlctl/go.sum @@ -18,19 +18,13 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/emicklei/go-restful v2.15.0+incompatible h1:8KpYO/Xl/ZudZs5RNOEhWMBY4hmzlZhhRd9cu+jrZP4= github.com/emicklei/go-restful v2.15.0+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emicklei/go-restful/v3 v3.8.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= -github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g= github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E= github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= -github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= -github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= -github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4= -github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= @@ -41,23 +35,15 @@ github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= -github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ= -github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY= github.com/go-openapi/jsonreference v0.19.6/go.mod h1:diGHMEHg2IqXZGKxqyvWdfWU/aim5Dprw5bqpKkTvns= github.com/go-openapi/jsonreference v0.20.1/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= -github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ= -github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.21.1/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= github.com/go-openapi/swag v0.22.4/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= -github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE= -github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= -github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= -github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM= github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= @@ -74,9 +60,7 @@ github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -93,8 +77,6 @@ github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/ github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6/go.mod h1:kf6iHlnVGwgKolg33glAes7Yg/8iWP8ukqeldJSO7jw= github.com/google/pprof v0.0.0-20240525223248-4bfdf5a9a2af/go.mod h1:K1liHPHnj73Fdn/EKuT8nrFqBihUSKXoLYU0BuatOYo= -github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad h1:a6HEuzUHeKH6hwfN/ZoQgRgVIWFJljSWa/zetS2WTvg= -github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -103,7 +85,6 @@ github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1: github.com/ianlancetaylor/demangle v0.0.0-20240312041847-bd984b5ce465/go.mod h1:gx7rwoVhcfuVKG5uya9Hs3Sxj7EIvldVofAWIUtGouw= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= @@ -122,7 +103,6 @@ github.com/ledongthuc/pdf v0.0.0-20220302134840-0c2507a12d80/go.mod h1:imJHygn/1 github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/moby/spdystream v0.4.0/go.mod h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -136,7 +116,6 @@ github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLA github.com/nxadm/tail v0.0.0-20211216163028-4472660a31a6/go.mod h1:A+9rV4WFp4DKg1Ym1v6YtCrJ2vvlt1ZA/iml0CNuu2A= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= github.com/onsi/ginkgo/v2 v2.0.0/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= @@ -157,8 +136,6 @@ github.com/onsi/ginkgo/v2 v2.13.0/go.mod h1:TE309ZR8s5FsKKpuB1YAQYBzCaAfUgatB/xl github.com/onsi/ginkgo/v2 v2.17.1/go.mod h1:llBI3WDLL9Z6taip6f33H76YcWtJv+7R3HigUjbIBOs= github.com/onsi/ginkgo/v2 v2.17.2/go.mod h1:nP2DPOQoNsQmsVyv5rDA8JkXQoCs6goXIvr/PRJ1eCc= github.com/onsi/ginkgo/v2 v2.19.0/go.mod h1:rlwLi9PilAFJ8jCg9UE1QP6VBpd6/xj3SRC0d6TU0To= -github.com/onsi/ginkgo/v2 v2.22.1 h1:QW7tbJAUDyVDVOM5dFa7qaybo+CRfR7bemlQUN6Z8aM= -github.com/onsi/ginkgo/v2 v2.22.1/go.mod h1:S6aTpoRsSq2cZOd+pssHAlKW/Q/jZt6cPrPlnj4a1xM= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= @@ -180,8 +157,6 @@ github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3ev github.com/onsi/gomega v1.30.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ= github.com/onsi/gomega v1.33.0/go.mod h1:+925n5YtiFsLzzafLUHzVMBpvvRAzrydIBiSIxjX3wY= github.com/onsi/gomega v1.33.1/go.mod h1:U4R44UsT+9eLIaYRB2a5qajjtQYn0hauxvRm16AVYg0= -github.com/onsi/gomega v1.36.2 h1:koNYke6TVk6ZmnyHrCXba/T/MoLBXFjeC1PtvYgw0A8= -github.com/onsi/gomega v1.36.2/go.mod h1:DdwyADRjrc825LhMEkD76cHR5+pUnjhUN8GlHlRPHzY= github.com/openshift/custom-resource-status v1.1.2 h1:C3DL44LEbvlbItfd8mT5jWrqPfHnSOQoQf/sypqA6A4= github.com/openshift/custom-resource-status v1.1.2/go.mod h1:DB/Mf2oTeiAmVVX1gN+NEqweonAPY0TKUwADizj8+ZA= github.com/orisano/pixelmatch v0.0.0-20220722002657-fb0b55479cde/go.mod h1:nZgzbfBr3hhjoZnS66nKrHmduYNpc34ny7RK4z5/HM0= @@ -218,8 +193,6 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -go.uber.org/mock v0.5.1 h1:ASgazW/qBmR+A32MYFDB6E2POoTgOwT509VP0CT/fjs= -go.uber.org/mock v0.5.1/go.mod h1:ge71pBPLYDk7QIi1LupWxdAykm7KIEFchiOqd6z7qMM= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= @@ -333,8 +306,6 @@ golang.org/x/tools v0.17.0/go.mod h1:xsh6VxdV005rRVaS6SSAf9oiAqljS7UZUacMZ8Bnsps golang.org/x/tools v0.20.0/go.mod h1:WvitBU7JJf6A4jOdg4S1tviW9bhUxkgeCui/0JHctQg= golang.org/x/tools v0.21.0/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= -golang.org/x/tools v0.28.0 h1:WuB6qZ4RPCQo5aP3WdKZS7i595EdWqWR8vqJTlwTVK8= -golang.org/x/tools v0.28.0/go.mod h1:dcIOrVd3mfQKTgrDVQHqCPMWy6lnhfhtX3hLXYVLfRw= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -393,7 +364,6 @@ k8s.io/klog/v2 v2.80.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/klog/v2 v2.120.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= -k8s.io/kube-openapi v0.0.0-20240430033511-f0e62f92d13f h1:0LQagt0gDpKqvIkAMPaRGcXawNMouPECM1+F9BVxEaM= k8s.io/kube-openapi v0.0.0-20240430033511-f0e62f92d13f/go.mod h1:S9tOR0FxgyusSNR+MboCuiDpVWkAifZvaYI1Q2ubgro= k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= k8s.io/utils v0.0.0-20240711033017-18e509b52bc8/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= @@ -401,14 +371,10 @@ k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 h1:M3sRQVHv7vB20Xc2ybTt7ODCeFj6J k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= kubevirt.io/api v0.0.0-20250930144221-aaa67e9803df h1:WLXWkHCVkKXUrKD3wuOrkfPUUEZpIY5xDIQoeknHabE= kubevirt.io/api v0.0.0-20250930144221-aaa67e9803df/go.mod h1:p66fEy/g79x7VpgUwrkUgOoG2lYs5LQq37WM6JXMwj4= -kubevirt.io/client-go v1.6.1 h1:hGxIsJZjxeVgPGRUnLeqWNiLv52WkSTq3LLLIQ8SNXM= -kubevirt.io/client-go v1.6.1/go.mod h1:Y/8zow0q41oBVM3f+wSkk581sGO2a9pchynOgJ8ALoc= kubevirt.io/containerized-data-importer-api v1.60.3-0.20241105012228-50fbed985de9 h1:KTb8wO1Lxj220DX7d2Rdo9xovvlyWWNo3AVm2ua+1nY= kubevirt.io/containerized-data-importer-api v1.60.3-0.20241105012228-50fbed985de9/go.mod h1:SDJjLGhbPyayDqAqawcGmVNapBp0KodOQvhKPLVGCQU= kubevirt.io/controller-lifecycle-operator-sdk/api v0.0.0-20220329064328-f3cc58c6ed90 h1:QMrd0nKP0BGbnxTqakhDZAUhGKxPiPiN5gSDqKUmGGc= kubevirt.io/controller-lifecycle-operator-sdk/api v0.0.0-20220329064328-f3cc58c6ed90/go.mod h1:018lASpFYBsYN6XwmA2TIrPCx6e0gviTd/ZNtSitKgc= -kubevirt.io/kubevirt v1.6.1 h1:n+aLOEam6YNPncvxckoVdbToV4fFU9JPF85PV8guY3I= -kubevirt.io/kubevirt v1.6.1/go.mod h1:Cz4iZeAC3ieVVmWsbeOY0RcebKLzJHslovRCwUwsIx0= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 h1:/Rv+M11QRah1itp8VhT6HoVx1Ray9eB4DBr+K+/sCJ8= sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3/go.mod h1:18nIHnGi6636UCz6m8i4DhaJ65T6EruyzmoQqI2BVDo= diff --git a/images/virt-launcher/vlctl/pkg/api/domain.go b/images/virt-launcher/vlctl/pkg/api/domain.go new file mode 100644 index 0000000000..a3e21017f9 --- /dev/null +++ b/images/virt-launcher/vlctl/pkg/api/domain.go @@ -0,0 +1,1142 @@ +/* +Copyright 2017,The KubeVirt Authors. +Copyright 2025 Flant JSC + +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. + +Initially copied from https://github.com/kubevirt/kubevirt/blob/v1.6.2/pkg/virt-launcher/virtwrap/api/schema.go +*/ + +package api + +import ( + "encoding/json" + "encoding/xml" + "strings" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/types" + + v1 "kubevirt.io/api/core/v1" +) + +const ( + UserAliasPrefix = "ua-" +) + +type Domain struct { + Spec DomainSpec +} + +type DomainSysInfo struct { + Hostname string + OSInfo GuestOSInfo + Timezone Timezone +} + +type GuestOSInfo struct { + Name string + KernelRelease string + Version string + PrettyName string + VersionId string + KernelVersion string + Machine string + Id string +} + +type InterfaceStatus struct { + Mac string + Ip string + IPs []string + InterfaceName string +} + +type SEVNodeParameters struct { + PDH string + CertChain string +} + +type Timezone struct { + Zone string + Offset int +} + +type FSFreeze struct { + Status string +} + +type FSDisk struct { + Serial string + BusType string +} + +type Filesystem struct { + Name string + Mountpoint string + Type string + UsedBytes int + TotalBytes int + Disk []FSDisk +} + +type User struct { + Name string + Domain string + LoginTime float64 +} + +type DomainGuestInfo struct { + Interfaces []InterfaceStatus + OSInfo *GuestOSInfo + FSFreezeStatus *FSFreeze +} + +// DomainSpec represents the actual conversion to libvirt XML. The fields must be +// tagged, and they must correspond to the libvirt domain as described in +// https://libvirt.org/formatdomain.html. +type DomainSpec struct { + XMLName xml.Name `xml:"domain"` + Type string `xml:"type,attr"` + XmlNS string `xml:"xmlns:qemu,attr,omitempty"` + Name string `xml:"name"` + UUID string `xml:"uuid,omitempty"` + Memory Memory `xml:"memory"` + CurrentMemory *Memory `xml:"currentMemory,omitempty"` + MaxMemory *MaxMemory `xml:"maxMemory,omitempty"` + MemoryBacking *MemoryBacking `xml:"memoryBacking,omitempty"` + OS OS `xml:"os"` + SysInfo *SysInfo `xml:"sysinfo,omitempty"` + Devices Devices `xml:"devices"` + Clock *Clock `xml:"clock,omitempty"` + Resource *Resource `xml:"resource,omitempty"` + QEMUCmd *Commandline `xml:"qemu:commandline,omitempty"` + Metadata Metadata `xml:"metadata,omitempty"` + Features *Features `xml:"features,omitempty"` + CPU CPU `xml:"cpu"` + VCPU *VCPU `xml:"vcpu"` + VCPUs *VCPUs `xml:"vcpus"` + CPUTune *CPUTune `xml:"cputune"` + NUMATune *NUMATune `xml:"numatune"` + IOThreads *IOThreads `xml:"iothreads,omitempty"` + LaunchSecurity *LaunchSecurity `xml:"launchSecurity,omitempty"` +} + +type CPUTune struct { + VCPUPin []CPUTuneVCPUPin `xml:"vcpupin"` + IOThreadPin []CPUTuneIOThreadPin `xml:"iothreadpin,omitempty"` + EmulatorPin *CPUEmulatorPin `xml:"emulatorpin"` +} + +type NUMATune struct { + Memory NumaTuneMemory `xml:"memory"` + MemNodes []MemNode `xml:"memnode"` +} + +type MemNode struct { + CellID uint32 `xml:"cellid,attr"` + Mode string `xml:"mode,attr"` + NodeSet string `xml:"nodeset,attr"` +} + +type NumaTuneMemory struct { + Mode string `xml:"mode,attr"` + NodeSet string `xml:"nodeset,attr"` +} + +type CPUTuneVCPUPin struct { + VCPU uint32 `xml:"vcpu,attr"` + CPUSet string `xml:"cpuset,attr"` +} + +type CPUTuneIOThreadPin struct { + IOThread uint32 `xml:"iothread,attr"` + CPUSet string `xml:"cpuset,attr"` +} + +type CPUEmulatorPin struct { + CPUSet string `xml:"cpuset,attr"` +} + +type VCPU struct { + Placement string `xml:"placement,attr"` + CPUs uint32 `xml:",chardata"` +} + +type VCPUsVCPU struct { + ID uint32 `xml:"id,attr"` + Enabled string `xml:"enabled,attr,omitempty"` + Hotpluggable string `xml:"hotpluggable,attr,omitempty"` + Order uint32 `xml:"order,attr,omitempty"` +} + +type VCPUs struct { + VCPU []VCPUsVCPU `xml:"vcpu"` +} + +type CPU struct { + Mode string `xml:"mode,attr,omitempty"` + Model string `xml:"model,omitempty"` + Features []CPUFeature `xml:"feature"` + Topology *CPUTopology `xml:"topology"` + NUMA *NUMA `xml:"numa,omitempty"` +} + +type NUMA struct { + Cells []NUMACell `xml:"cell"` +} + +type NUMACell struct { + ID string `xml:"id,attr"` + CPUs string `xml:"cpus,attr"` + Memory uint64 `xml:"memory,attr,omitempty"` + Unit string `xml:"unit,attr,omitempty"` + MemoryAccess string `xml:"memAccess,attr,omitempty"` +} + +type CPUFeature struct { + Name string `xml:"name,attr"` + Policy string `xml:"policy,attr,omitempty"` +} + +type CPUTopology struct { + Sockets uint32 `xml:"sockets,attr,omitempty"` + Cores uint32 `xml:"cores,attr,omitempty"` + Threads uint32 `xml:"threads,attr,omitempty"` +} + +type Features struct { + ACPI *FeatureEnabled `xml:"acpi,omitempty"` + APIC *FeatureEnabled `xml:"apic,omitempty"` + Hyperv *FeatureHyperv `xml:"hyperv,omitempty"` + SMM *FeatureEnabled `xml:"smm,omitempty"` + KVM *FeatureKVM `xml:"kvm,omitempty"` + PVSpinlock *FeaturePVSpinlock `xml:"pvspinlock,omitempty"` + PMU *FeatureState `xml:"pmu,omitempty"` + VMPort *FeatureState `xml:"vmport,omitempty"` +} + +const HypervModePassthrough = "passthrough" + +type FeatureHyperv struct { + Mode string `xml:"mode,attr,omitempty"` + Relaxed *FeatureState `xml:"relaxed,omitempty"` + VAPIC *FeatureState `xml:"vapic,omitempty"` + Spinlocks *FeatureSpinlocks `xml:"spinlocks,omitempty"` + VPIndex *FeatureState `xml:"vpindex,omitempty"` + Runtime *FeatureState `xml:"runtime,omitempty"` + SyNIC *FeatureState `xml:"synic,omitempty"` + SyNICTimer *SyNICTimer `xml:"stimer,omitempty"` + Reset *FeatureState `xml:"reset,omitempty"` + VendorID *FeatureVendorID `xml:"vendor_id,omitempty"` + Frequencies *FeatureState `xml:"frequencies,omitempty"` + Reenlightenment *FeatureState `xml:"reenlightenment,omitempty"` + TLBFlush *FeatureState `xml:"tlbflush,omitempty"` + IPI *FeatureState `xml:"ipi,omitempty"` + EVMCS *FeatureState `xml:"evmcs,omitempty"` +} + +type FeatureSpinlocks struct { + State string `xml:"state,attr,omitempty"` + Retries *uint32 `xml:"retries,attr,omitempty"` +} + +type SyNICTimer struct { + Direct *FeatureState `xml:"direct,omitempty"` + State string `xml:"state,attr,omitempty"` +} + +type FeaturePVSpinlock struct { + State string `xml:"state,attr,omitempty"` +} + +type FeatureVendorID struct { + State string `xml:"state,attr,omitempty"` + Value string `xml:"value,attr,omitempty"` +} + +type FeatureEnabled struct { +} + +type Shareable struct{} + +type Slice struct { + Slice SliceType `xml:"slice,omitempty"` +} + +type SliceType struct { + Type string `xml:"type,attr"` + Offset int64 `xml:"offset,attr"` + Size int64 `xml:"size,attr"` +} + +type FeatureState struct { + State string `xml:"state,attr,omitempty"` +} + +type FeatureKVM struct { + Hidden *FeatureState `xml:"hidden,omitempty"` + HintDedicated *FeatureState `xml:"hint-dedicated,omitempty"` +} + +type Metadata struct { + // KubeVirt contains kubevirt related metadata + // Note: Libvirt only accept one element at metadata root with a specific namespace + KubeVirt KubeVirtMetadata `xml:"http://kubevirt.io kubevirt"` +} + +type KubeVirtMetadata struct { + UID types.UID `xml:"uid"` + GracePeriod *GracePeriodMetadata `xml:"graceperiod,omitempty"` + Migration *MigrationMetadata `xml:"migration,omitempty"` + AccessCredential *AccessCredentialMetadata `xml:"accessCredential,omitempty"` + MemoryDump *MemoryDumpMetadata `xml:"memoryDump,omitempty"` +} + +type AccessCredentialMetadata struct { + Succeeded bool `xml:"succeeded,omitempty"` + Message string `xml:"message,omitempty"` +} + +type MemoryDumpMetadata struct { + FileName string `xml:"fileName,omitempty"` + StartTimestamp *metav1.Time `xml:"startTimestamp,omitempty"` + EndTimestamp *metav1.Time `xml:"endTimestamp,omitempty"` + Completed bool `xml:"completed,omitempty"` + Failed bool `xml:"failed,omitempty"` + FailureReason string `xml:"failureReason,omitempty"` +} + +type MigrationMetadata struct { + UID types.UID `xml:"uid,omitempty"` + StartTimestamp *metav1.Time `xml:"startTimestamp,omitempty"` + EndTimestamp *metav1.Time `xml:"endTimestamp,omitempty"` + Failed bool `xml:"failed,omitempty"` + FailureReason string `xml:"failureReason,omitempty"` + AbortStatus string `xml:"abortStatus,omitempty"` + Mode v1.MigrationMode `xml:"mode,omitempty"` +} + +type GracePeriodMetadata struct { + DeletionGracePeriodSeconds int64 `xml:"deletionGracePeriodSeconds"` + DeletionTimestamp *metav1.Time `xml:"deletionTimestamp,omitempty"` + MarkedForGracefulShutdown *bool `xml:"markedForGracefulShutdown,omitempty"` +} + +type Commandline struct { + QEMUEnv []Env `xml:"qemu:env,omitempty"` + QEMUArg []Arg `xml:"qemu:arg,omitempty"` +} + +type Env struct { + Name string `xml:"name,attr"` + Value string `xml:"value,attr"` +} + +type Arg struct { + Value string `xml:"value,attr"` +} + +type Resource struct { + Partition string `xml:"partition"` +} + +type Memory struct { + Value uint64 `xml:",chardata"` + Unit string `xml:"unit,attr"` +} + +type MaxMemory struct { + Value uint64 `xml:",chardata"` + Unit string `xml:"unit,attr"` + Slots uint64 `xml:"slots,attr"` +} + +// MemoryBacking mirroring libvirt XML under https://libvirt.org/formatdomain.html#elementsMemoryBacking +type MemoryBacking struct { + HugePages *HugePages `xml:"hugepages,omitempty"` + Source *MemoryBackingSource `xml:"source,omitempty"` + Access *MemoryBackingAccess `xml:"access,omitempty"` + Allocation *MemoryAllocation `xml:"allocation,omitempty"` + NoSharePages *NoSharePages `xml:"nosharepages,omitempty"` +} + +type MemoryAllocationMode string + +const ( + MemoryAllocationModeImmediate MemoryAllocationMode = "immediate" +) + +type MemoryAllocation struct { + Mode MemoryAllocationMode `xml:"mode,attr"` +} + +type MemoryBackingSource struct { + Type string `xml:"type,attr"` +} + +// HugePages mirroring libvirt XML under memoryBacking +type HugePages struct { + HugePage []HugePage `xml:"page,omitempty"` +} + +// HugePage mirroring libvirt XML under hugepages +type HugePage struct { + Size string `xml:"size,attr"` + Unit string `xml:"unit,attr"` + NodeSet string `xml:"nodeset,attr"` +} + +type MemoryBackingAccess struct { + Mode string `xml:"mode,attr"` +} + +type NoSharePages struct { +} + +type MemoryAddress struct { + Base string `xml:"base,attr"` +} + +type MemoryTarget struct { + Size Memory `xml:"size"` + Requested Memory `xml:"requested"` + Current Memory `xml:"current"` + Node string `xml:"node"` + Block Memory `xml:"block"` + Address *MemoryAddress `xml:"address,omitempty"` +} + +type MemoryDevice struct { + XMLName xml.Name `xml:"memory"` + Model string `xml:"model,attr"` + Target *MemoryTarget `xml:"target"` + Alias *Alias `xml:"alias,omitempty"` + Address *Address `xml:"address,omitempty"` +} + +type Devices struct { + Emulator string `xml:"emulator,omitempty"` + Interfaces []Interface `xml:"interface"` + Channels []Channel `xml:"channel"` + HostDevices []HostDevice `xml:"hostdev,omitempty"` + PanicDevices []PanicDevice `xml:"panic,omitempty"` + Controllers []Controller `xml:"controller,omitempty"` + Video []Video `xml:"video"` + Graphics []Graphics `xml:"graphics"` + Ballooning *MemBalloon `xml:"memballoon,omitempty"` + Disks []Disk `xml:"disk"` + Inputs []Input `xml:"input"` + Serials []Serial `xml:"serial"` + Consoles []Console `xml:"console"` + Watchdogs []Watchdog `xml:"watchdog,omitempty"` + Rng *Rng `xml:"rng,omitempty"` + Filesystems []FilesystemDevice `xml:"filesystem,omitempty"` + Redirs []RedirectedDevice `xml:"redirdev,omitempty"` + SoundCards []SoundCard `xml:"sound,omitempty"` + TPMs []TPM `xml:"tpm,omitempty"` + VSOCK *VSOCK `xml:"vsock,omitempty"` + Memory *MemoryDevice `xml:"memory,omitempty"` +} + +type PanicDevice struct { + Model *v1.PanicDeviceModel `xml:"model,attr,omitempty"` +} + +type TPM struct { + Model string `xml:"model,attr"` + Backend TPMBackend `xml:"backend"` +} + +type TPMBackend struct { + Type string `xml:"type,attr"` + Version string `xml:"version,attr"` + PersistentState string `xml:"persistent_state,attr,omitempty"` +} + +// RedirectedDevice describes a device to be redirected +// See: https://libvirt.org/formatdomain.html#redirected-devices +type RedirectedDevice struct { + Type string `xml:"type,attr"` + Bus string `xml:"bus,attr"` + Source RedirectedDeviceSource `xml:"source"` +} + +type RedirectedDeviceSource struct { + Mode string `xml:"mode,attr"` + Path string `xml:"path,attr"` +} + +type FilesystemDevice struct { + Type string `xml:"type,attr"` + AccessMode string `xml:"accessMode,attr"` + Source *FilesystemSource `xml:"source,omitempty"` + Target *FilesystemTarget `xml:"target,omitempty"` + Driver *FilesystemDriver `xml:"driver,omitempty"` + Binary *FilesystemBinary `xml:"binary,omitempty"` +} + +type FilesystemTarget struct { + Dir string `xml:"dir,attr,omitempty"` +} + +type FilesystemSource struct { + Dir string `xml:"dir,attr"` + Socket string `xml:"socket,attr,omitempty"` +} + +type FilesystemDriver struct { + Type string `xml:"type,attr"` + Queue string `xml:"queue,attr,omitempty"` +} + +type FilesystemBinary struct { + Path string `xml:"path,attr,omitempty"` + Xattr string `xml:"xattr,attr,omitempty"` + Cache *FilesystemBinaryCache `xml:"cache,omitempty"` + Lock *FilesystemBinaryLock `xml:"lock,omitempty"` +} + +type FilesystemBinaryCache struct { + Mode string `xml:"mode,attr,omitempty"` +} + +type FilesystemBinaryLock struct { + Posix string `xml:"posix,attr,omitempty"` + Flock string `xml:"flock,attr,omitempty"` +} + +// Input represents input device, e.g. tablet +type Input struct { + Type v1.InputType `xml:"type,attr"` + Bus v1.InputBus `xml:"bus,attr"` + Alias *Alias `xml:"alias,omitempty"` + Address *Address `xml:"address,omitempty"` + Model string `xml:"model,attr,omitempty"` +} + +// BEGIN HostDevice ----------------------------- +type HostDevice struct { + XMLName xml.Name `xml:"hostdev"` + Source HostDeviceSource `xml:"source"` + Type string `xml:"type,attr"` + BootOrder *BootOrder `xml:"boot,omitempty"` + Managed string `xml:"managed,attr,omitempty"` + Mode string `xml:"mode,attr,omitempty"` + Model string `xml:"model,attr,omitempty"` + Address *Address `xml:"address,omitempty"` + Alias *Alias `xml:"alias,omitempty"` + Display string `xml:"display,attr,omitempty"` + RamFB string `xml:"ramfb,attr,omitempty"` +} + +type HostDeviceSource struct { + Address *Address `xml:"address,omitempty"` +} + +// END HostDevice ----------------------------- + +// BEGIN Controller ----------------------------- + +// Controller represens libvirt controller element https://libvirt.org/formatdomain.html#elementsControllers +type Controller struct { + Type string `xml:"type,attr"` + Index string `xml:"index,attr"` + Model string `xml:"model,attr,omitempty"` + Driver *ControllerDriver `xml:"driver,omitempty"` + Alias *Alias `xml:"alias,omitempty"` + Address *Address `xml:"address,omitempty"` + PCIHole64 *PCIHole64 `xml:"pcihole64,omitempty"` +} + +// END Controller ----------------------------- + +// BEGIN ControllerDriver +type ControllerDriver struct { + IOThread *uint `xml:"iothread,attr,omitempty"` + Queues *uint `xml:"queues,attr,omitempty"` + IOMMU string `xml:"iommu,attr,omitempty"` +} + +// END ControllerDriver + +// BEGIN PCIHole64 +type PCIHole64 struct { + Value uint `xml:",chardata"` + Unit string `xml:"unit,attr,omitempty"` +} + +// END PCIHole64 + +// BEGIN Disk ----------------------------- + +type Disk struct { + Device string `xml:"device,attr"` + Snapshot string `xml:"snapshot,attr,omitempty"` + Type string `xml:"type,attr"` + Source DiskSource `xml:"source"` + Target DiskTarget `xml:"target"` + Serial string `xml:"serial,omitempty"` + Driver *DiskDriver `xml:"driver,omitempty"` + ReadOnly *ReadOnly `xml:"readonly,omitempty"` + Auth *DiskAuth `xml:"auth,omitempty"` + Alias *Alias `xml:"alias,omitempty"` + BackingStore *BackingStore `xml:"backingStore,omitempty"` + BootOrder *BootOrder `xml:"boot,omitempty"` + Address *Address `xml:"address,omitempty"` + Model string `xml:"model,attr,omitempty"` + BlockIO *BlockIO `xml:"blockio,omitempty"` + FilesystemOverhead *v1.Percent `xml:"filesystemOverhead,omitempty"` + Capacity *int64 `xml:"capacity,omitempty"` + ExpandDisksEnabled bool `xml:"expandDisksEnabled,omitempty"` + Shareable *Shareable `xml:"shareable,omitempty"` +} + +type DiskAuth struct { + Username string `xml:"username,attr"` + Secret *DiskSecret `xml:"secret,omitempty"` +} + +type DiskSecret struct { + Type string `xml:"type,attr"` + Usage string `xml:"usage,attr,omitempty"` + UUID string `xml:"uuid,attr,omitempty"` +} + +type ReadOnly struct{} + +type DiskSource struct { + Dev string `xml:"dev,attr,omitempty"` + File string `xml:"file,attr,omitempty"` + StartupPolicy string `xml:"startupPolicy,attr,omitempty"` + Protocol string `xml:"protocol,attr,omitempty"` + Name string `xml:"name,attr,omitempty"` + Host *DiskSourceHost `xml:"host,omitempty"` + Reservations *Reservations `xml:"reservations,omitempty"` + Slices []Slice `xml:"slices,omitempty"` +} + +type DiskTarget struct { + Bus v1.DiskBus `xml:"bus,attr,omitempty"` + Device string `xml:"dev,attr,omitempty"` + Tray string `xml:"tray,attr,omitempty"` +} + +type DiskDriver struct { + Cache string `xml:"cache,attr,omitempty"` + ErrorPolicy v1.DiskErrorPolicy `xml:"error_policy,attr,omitempty"` + IO v1.DriverIO `xml:"io,attr,omitempty"` + Name string `xml:"name,attr"` + Type string `xml:"type,attr"` + IOThread *uint `xml:"iothread,attr,omitempty"` + IOThreads *DiskIOThreads `xml:"iothreads"` + Queues *uint `xml:"queues,attr,omitempty"` + Discard string `xml:"discard,attr,omitempty"` + IOMMU string `xml:"iommu,attr,omitempty"` +} + +type DiskIOThreads struct { + IOThread []DiskIOThread `xml:"iothread"` +} + +type DiskIOThread struct { + Id uint32 `xml:"id,attr"` +} + +type DiskSourceHost struct { + Name string `xml:"name,attr"` + Port string `xml:"port,attr,omitempty"` +} + +type BackingStore struct { + Type string `xml:"type,attr,omitempty"` + Format *BackingStoreFormat `xml:"format,omitempty"` + Source *DiskSource `xml:"source,omitempty"` +} + +type BackingStoreFormat struct { + Type string `xml:"type,attr"` +} + +type BlockIO struct { + LogicalBlockSize uint `xml:"logical_block_size,attr,omitempty"` + PhysicalBlockSize uint `xml:"physical_block_size,attr,omitempty"` +} + +type Reservations struct { + Managed string `xml:"managed,attr,omitempty"` + SourceReservations *SourceReservations `xml:"source,omitempty"` +} + +type SourceReservations struct { + Type string `xml:"type,attr"` + Path string `xml:"path,attr,omitempty"` + Mode string `xml:"mode,attr,omitempty"` +} + +// END Disk ----------------------------- + +// BEGIN Serial ----------------------------- + +type Serial struct { + Type string `xml:"type,attr"` + Target *SerialTarget `xml:"target,omitempty"` + Source *SerialSource `xml:"source,omitempty"` + Alias *Alias `xml:"alias,omitempty"` + Log *SerialLog `xml:"log,omitempty"` +} + +type SerialTarget struct { + Port *uint `xml:"port,attr,omitempty"` +} + +type SerialSource struct { + Mode string `xml:"mode,attr,omitempty"` + Path string `xml:"path,attr,omitempty"` +} + +type SerialLog struct { + File string `xml:"file,attr,omitempty"` + Append string `xml:"append,attr,omitempty"` +} + +// END Serial ----------------------------- + +// BEGIN Console ----------------------------- + +type Console struct { + Type string `xml:"type,attr"` + Target *ConsoleTarget `xml:"target,omitempty"` + Source *ConsoleSource `xml:"source,omitempty"` + Alias *Alias `xml:"alias,omitempty"` +} + +type ConsoleTarget struct { + Type *string `xml:"type,attr,omitempty"` + Port *uint `xml:"port,attr,omitempty"` +} + +type ConsoleSource struct { + Mode string `xml:"mode,attr,omitempty"` + Path string `xml:"path,attr,omitempty"` +} + +// END Serial ----------------------------- + +// BEGIN Inteface ----------------------------- + +type Interface struct { + XMLName xml.Name `xml:"interface"` + Address *Address `xml:"address,omitempty"` + Type string `xml:"type,attr"` + TrustGuestRxFilters string `xml:"trustGuestRxFilters,attr,omitempty"` + Source InterfaceSource `xml:"source"` + Target *InterfaceTarget `xml:"target,omitempty"` + Model *Model `xml:"model,omitempty"` + MAC *MAC `xml:"mac,omitempty"` + MTU *MTU `xml:"mtu,omitempty"` + BandWidth *BandWidth `xml:"bandwidth,omitempty"` + BootOrder *BootOrder `xml:"boot,omitempty"` + LinkState *LinkState `xml:"link,omitempty"` + FilterRef *FilterRef `xml:"filterref,omitempty"` + Alias *Alias `xml:"alias,omitempty"` + Driver *InterfaceDriver `xml:"driver,omitempty"` + Rom *Rom `xml:"rom,omitempty"` + ACPI *ACPI `xml:"acpi,omitempty"` + Backend *InterfaceBackend `xml:"backend,omitempty"` + PortForward []InterfacePortForward `xml:"portForward,omitempty"` +} + +type InterfacePortForward struct { + Proto string `xml:"proto,attr"` + Address string `xml:"address,attr,omitempty"` + Dev string `xml:"dev,attr,omitempty"` + Ranges []InterfacePortForwardRange `xml:"range,omitempty"` +} + +type InterfacePortForwardRange struct { + Start uint `xml:"start,attr"` + End uint `xml:"end,attr,omitempty"` + To uint `xml:"to,attr,omitempty"` + Exclude string `xml:"exclude,attr,omitempty"` +} + +type InterfaceBackend struct { + Type string `xml:"type,attr,omitempty"` + LogFile string `xml:"logFile,attr,omitempty"` +} + +type ACPI struct { + Index uint `xml:"index,attr"` +} + +type InterfaceDriver struct { + Name string `xml:"name,attr"` + Queues *uint `xml:"queues,attr,omitempty"` + IOMMU string `xml:"iommu,attr,omitempty"` +} + +type LinkState struct { + State string `xml:"state,attr"` +} + +type BandWidth struct { +} + +type BootOrder struct { + Order uint `xml:"order,attr"` +} + +type MAC struct { + MAC string `xml:"address,attr"` +} + +type MTU struct { + Size string `xml:"size,attr"` +} + +type FilterRef struct { + Filter string `xml:"filter,attr"` +} + +type InterfaceSource struct { + Network string `xml:"network,attr,omitempty"` + Device string `xml:"dev,attr,omitempty"` + Bridge string `xml:"bridge,attr,omitempty"` + Mode string `xml:"mode,attr,omitempty"` + Address *Address `xml:"address,omitempty"` +} + +type Model struct { + Type string `xml:"type,attr"` +} + +type InterfaceTarget struct { + Device string `xml:"dev,attr"` + Managed string `xml:"managed,attr,omitempty"` +} + +type Alias struct { + name string + userDefined bool +} + +// Package private, responsible to interact with xml and json marshal/unmarshal +type userAliasMarshal struct { + Name string `xml:"name,attr"` + UserDefined bool `xml:"-"` +} + +type Rom struct { + Enabled string `xml:"enabled,attr"` +} + +func (alias *Alias) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { + var userAlias userAliasMarshal + err := d.DecodeElement(&userAlias, &start) + if err != nil { + return err + } + *alias = Alias{name: userAlias.Name} + if strings.HasPrefix(alias.name, UserAliasPrefix) { + alias.userDefined = true + alias.name = alias.name[len(UserAliasPrefix):] + } + return nil +} + +func (alias Alias) MarshalJSON() ([]byte, error) { + userAlias := userAliasMarshal{Name: alias.name, UserDefined: alias.userDefined} + return json.Marshal(&userAlias) +} + +func (alias *Alias) UnmarshalJSON(data []byte) error { + var userAlias userAliasMarshal + if err := json.Unmarshal(data, &userAlias); err != nil { + return err + } + *alias = Alias{name: userAlias.Name, userDefined: userAlias.UserDefined} + return nil +} + +// END Inteface ----------------------------- +//BEGIN OS -------------------- + +type OS struct { + Type OSType `xml:"type"` + ACPI *OSACPI `xml:"acpi,omitempty"` + SMBios *SMBios `xml:"smbios,omitempty"` + BootOrder []Boot `xml:"boot"` + BootMenu *BootMenu `xml:"bootmenu,omitempty"` + BIOS *BIOS `xml:"bios,omitempty"` + BootLoader *Loader `xml:"loader,omitempty"` + NVRam *NVRam `xml:"nvram,omitempty"` + Kernel string `xml:"kernel,omitempty"` + Initrd string `xml:"initrd,omitempty"` + KernelArgs string `xml:"cmdline,omitempty"` +} + +type OSType struct { + OS string `xml:",chardata"` + Arch string `xml:"arch,attr,omitempty"` + Machine string `xml:"machine,attr,omitempty"` +} + +type OSACPI struct { + Table []ACPITable `xml:"table,omitempty"` +} + +type ACPITable struct { + Path string `xml:",chardata"` + Type string `xml:"type,attr,omitempty"` +} + +type SMBios struct { + Mode string `xml:"mode,attr"` +} + +type NVRam struct { + Template string `xml:"template,attr,omitempty"` + NVRam string `xml:",chardata"` +} + +type Boot struct { + Dev string `xml:"dev,attr"` +} + +type BootMenu struct { + Enable string `xml:"enable,attr"` + Timeout *uint `xml:"timeout,attr,omitempty"` +} + +type Loader struct { + ReadOnly string `xml:"readonly,attr,omitempty"` + Secure string `xml:"secure,attr,omitempty"` + Type string `xml:"type,attr,omitempty"` + Path string `xml:",chardata"` +} + +// TODO +type BIOS struct { + UseSerial string `xml:"useserial,attr,omitempty"` +} + +type SysInfo struct { + Type string `xml:"type,attr"` + System []Entry `xml:"system>entry"` + BIOS []Entry `xml:"bios>entry"` + BaseBoard []Entry `xml:"baseBoard>entry"` + Chassis []Entry `xml:"chassis>entry"` +} + +type Entry struct { + Name string `xml:"name,attr"` + Value string `xml:",chardata"` +} + +//END OS -------------------- +//BEGIN LaunchSecurity -------------------- + +type LaunchSecurity struct { + Type string `xml:"type,attr"` + Cbitpos string `xml:"cbitpos,omitempty"` + ReducedPhysBits string `xml:"reducedPhysBits,omitempty"` + Policy string `xml:"policy,omitempty"` + DHCert string `xml:"dhCert,omitempty"` + Session string `xml:"session,omitempty"` +} + +//END LaunchSecurity -------------------- +//BEGIN Clock -------------------- + +type Clock struct { + Offset string `xml:"offset,attr,omitempty"` + Timezone string `xml:"timezone,attr,omitempty"` + Adjustment string `xml:"adjustment,attr,omitempty"` + Timer []Timer `xml:"timer,omitempty"` +} + +type Timer struct { + Name string `xml:"name,attr"` + TickPolicy string `xml:"tickpolicy,attr,omitempty"` + Present string `xml:"present,attr,omitempty"` + Track string `xml:"track,attr,omitempty"` + Frequency string `xml:"frequency,attr,omitempty"` +} + +//END Clock -------------------- + +//BEGIN Channel -------------------- + +type Channel struct { + Type string `xml:"type,attr"` + Source *ChannelSource `xml:"source,omitempty"` + Target *ChannelTarget `xml:"target,omitempty"` +} + +type ChannelTarget struct { + Name string `xml:"name,attr,omitempty"` + Type string `xml:"type,attr"` + Address string `xml:"address,attr,omitempty"` + Port uint `xml:"port,attr,omitempty"` + State string `xml:"state,attr,omitempty"` +} + +type ChannelSource struct { + Mode string `xml:"mode,attr"` + Path string `xml:"path,attr"` +} + +//END Channel -------------------- + +//BEGIN Sound ------------------- + +type SoundCard struct { + Alias *Alias `xml:"alias,omitempty"` + Model string `xml:"model,attr"` +} + +//END Sound ------------------- + +//BEGIN Video ------------------- + +type Video struct { + Model VideoModel `xml:"model"` +} + +type VideoModel struct { + Type string `xml:"type,attr"` + Heads *uint `xml:"heads,attr,omitempty"` + Ram *uint `xml:"ram,attr,omitempty"` + VRam *uint `xml:"vram,attr,omitempty"` + VGAMem *uint `xml:"vgamem,attr,omitempty"` +} + +type Graphics struct { + AutoPort string `xml:"autoport,attr,omitempty"` + DefaultMode string `xml:"defaultMode,attr,omitempty"` + Listen *GraphicsListen `xml:"listen,omitempty"` + PasswdValidTo string `xml:"passwdValidTo,attr,omitempty"` + Port int32 `xml:"port,attr,omitempty"` + TLSPort int `xml:"tlsPort,attr,omitempty"` + Type string `xml:"type,attr"` +} + +type GraphicsListen struct { + Type string `xml:"type,attr"` + Address string `xml:"address,attr,omitempty"` + Network string `xml:"newtork,attr,omitempty"` + Socket string `xml:"socket,attr,omitempty"` +} + +type Address struct { + Type string `xml:"type,attr"` + Domain string `xml:"domain,attr,omitempty"` + Bus string `xml:"bus,attr"` + Slot string `xml:"slot,attr,omitempty"` + Function string `xml:"function,attr,omitempty"` + Controller string `xml:"controller,attr,omitempty"` + Target string `xml:"target,attr,omitempty"` + Unit string `xml:"unit,attr,omitempty"` + UUID string `xml:"uuid,attr,omitempty"` + Device string `xml:"device,attr,omitempty"` + CSSID string `xml:"cssid,attr,omitempty"` + SSID string `xml:"ssid,attr,omitempty"` + DevNo string `xml:"devno,attr,omitempty"` +} + +//END Video ------------------- + +//BEGIN VSOCK ------------------- + +type VSOCK struct { + Model string `xml:"model,attr,omitempty"` + CID CID `xml:"cid"` +} + +type CID struct { + Auto string `xml:"auto,attr"` + Address uint32 `xml:"address,attr,omitempty"` +} + +//END VSOCK ------------------- + +type Stats struct { + Period uint `xml:"period,attr"` +} + +type MemBalloon struct { + Model string `xml:"model,attr"` + Stats *Stats `xml:"stats,omitempty"` + Address *Address `xml:"address,omitempty"` + Driver *MemBalloonDriver `xml:"driver,omitempty"` + FreePageReporting string `xml:"freePageReporting,attr,omitempty"` +} + +type MemBalloonDriver struct { + IOMMU string `xml:"iommu,attr,omitempty"` +} + +type Watchdog struct { + Model string `xml:"model,attr"` + Action string `xml:"action,attr"` + Alias *Alias `xml:"alias,omitempty"` + Address *Address `xml:"address,omitempty"` +} + +// Rng represents the source of entropy from host to VM +type Rng struct { + // Model attribute specifies what type of RNG device is provided + Model string `xml:"model,attr"` + // Backend specifies the source of entropy to be used + Backend *RngBackend `xml:"backend,omitempty"` + Address *Address `xml:"address,omitempty"` + Driver *RngDriver `xml:"driver,omitempty"` +} + +type RngDriver struct { + IOMMU string `xml:"iommu,attr,omitempty"` +} + +// RngRate sets the limiting factor how to read from entropy source +type RngRate struct { + // Period define how long is the read period + Period uint32 `xml:"period,attr"` + // Bytes define how many bytes can guest read from entropy source + Bytes uint32 `xml:"bytes,attr"` +} + +// RngBackend is the backend device used +type RngBackend struct { + // Model is source model + Model string `xml:"model,attr"` + // specifies the source of entropy to be used + Source string `xml:",chardata"` +} + +type IOThreads struct { + IOThreads uint `xml:",chardata"` +} + +type SecretUsage struct { + Type string `xml:"type,attr"` + Target string `xml:"target,omitempty"` +} + +type SecretSpec struct { + XMLName xml.Name `xml:"secret"` + Ephemeral string `xml:"ephemeral,attr"` + Private string `xml:"private,attr"` + Description string `xml:"description,omitempty"` + Usage SecretUsage `xml:"usage,omitempty"` +} diff --git a/images/virt-launcher/vlctl/pkg/api/generated/cmd/proto/cmd.pb.go b/images/virt-launcher/vlctl/pkg/api/generated/cmd/proto/cmd.pb.go new file mode 100644 index 0000000000..b16a1afa64 --- /dev/null +++ b/images/virt-launcher/vlctl/pkg/api/generated/cmd/proto/cmd.pb.go @@ -0,0 +1,2251 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.10 +// protoc v3.19.6 +// source: proto/cmd.proto + +package cmd + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type MigrationProxyAction int32 + +const ( + MigrationProxyAction_START MigrationProxyAction = 0 + MigrationProxyAction_STOP MigrationProxyAction = 1 +) + +// Enum value maps for MigrationProxyAction. +var ( + MigrationProxyAction_name = map[int32]string{ + 0: "START", + 1: "STOP", + } + MigrationProxyAction_value = map[string]int32{ + "START": 0, + "STOP": 1, + } +) + +func (x MigrationProxyAction) Enum() *MigrationProxyAction { + p := new(MigrationProxyAction) + *p = x + return p +} + +func (x MigrationProxyAction) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (MigrationProxyAction) Descriptor() protoreflect.EnumDescriptor { + return file_proto_cmd_proto_enumTypes[0].Descriptor() +} + +func (MigrationProxyAction) Type() protoreflect.EnumType { + return &file_proto_cmd_proto_enumTypes[0] +} + +func (x MigrationProxyAction) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use MigrationProxyAction.Descriptor instead. +func (MigrationProxyAction) EnumDescriptor() ([]byte, []int) { + return file_proto_cmd_proto_rawDescGZIP(), []int{0} +} + +type QemuVersionResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *QemuVersionResponse) Reset() { + *x = QemuVersionResponse{} + mi := &file_proto_cmd_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *QemuVersionResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QemuVersionResponse) ProtoMessage() {} + +func (x *QemuVersionResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_cmd_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use QemuVersionResponse.ProtoReflect.Descriptor instead. +func (*QemuVersionResponse) Descriptor() ([]byte, []int) { + return file_proto_cmd_proto_rawDescGZIP(), []int{0} +} + +func (x *QemuVersionResponse) GetResponse() *Response { + if x != nil { + return x.Response + } + return nil +} + +func (x *QemuVersionResponse) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +type VMI struct { + state protoimpl.MessageState `protogen:"open.v1"` + VmiJson []byte `protobuf:"bytes,1,opt,name=vmiJson,proto3" json:"vmiJson,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *VMI) Reset() { + *x = VMI{} + mi := &file_proto_cmd_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *VMI) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VMI) ProtoMessage() {} + +func (x *VMI) ProtoReflect() protoreflect.Message { + mi := &file_proto_cmd_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VMI.ProtoReflect.Descriptor instead. +func (*VMI) Descriptor() ([]byte, []int) { + return file_proto_cmd_proto_rawDescGZIP(), []int{1} +} + +func (x *VMI) GetVmiJson() []byte { + if x != nil { + return x.VmiJson + } + return nil +} + +type CPU struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Siblings []uint32 `protobuf:"varint,2,rep,packed,name=siblings,proto3" json:"siblings,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CPU) Reset() { + *x = CPU{} + mi := &file_proto_cmd_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CPU) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CPU) ProtoMessage() {} + +func (x *CPU) ProtoReflect() protoreflect.Message { + mi := &file_proto_cmd_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CPU.ProtoReflect.Descriptor instead. +func (*CPU) Descriptor() ([]byte, []int) { + return file_proto_cmd_proto_rawDescGZIP(), []int{2} +} + +func (x *CPU) GetId() uint32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *CPU) GetSiblings() []uint32 { + if x != nil { + return x.Siblings + } + return nil +} + +type Sibling struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Value uint64 `protobuf:"varint,2,opt,name=value,proto3" json:"value,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Sibling) Reset() { + *x = Sibling{} + mi := &file_proto_cmd_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Sibling) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Sibling) ProtoMessage() {} + +func (x *Sibling) ProtoReflect() protoreflect.Message { + mi := &file_proto_cmd_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Sibling.ProtoReflect.Descriptor instead. +func (*Sibling) Descriptor() ([]byte, []int) { + return file_proto_cmd_proto_rawDescGZIP(), []int{3} +} + +func (x *Sibling) GetId() uint32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Sibling) GetValue() uint64 { + if x != nil { + return x.Value + } + return 0 +} + +type Pages struct { + state protoimpl.MessageState `protogen:"open.v1"` + Count uint64 `protobuf:"varint,1,opt,name=count,proto3" json:"count,omitempty"` + Unit string `protobuf:"bytes,2,opt,name=unit,proto3" json:"unit,omitempty"` + Size uint32 `protobuf:"varint,3,opt,name=size,proto3" json:"size,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Pages) Reset() { + *x = Pages{} + mi := &file_proto_cmd_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Pages) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Pages) ProtoMessage() {} + +func (x *Pages) ProtoReflect() protoreflect.Message { + mi := &file_proto_cmd_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Pages.ProtoReflect.Descriptor instead. +func (*Pages) Descriptor() ([]byte, []int) { + return file_proto_cmd_proto_rawDescGZIP(), []int{4} +} + +func (x *Pages) GetCount() uint64 { + if x != nil { + return x.Count + } + return 0 +} + +func (x *Pages) GetUnit() string { + if x != nil { + return x.Unit + } + return "" +} + +func (x *Pages) GetSize() uint32 { + if x != nil { + return x.Size + } + return 0 +} + +type Memory struct { + state protoimpl.MessageState `protogen:"open.v1"` + Amount uint64 `protobuf:"varint,1,opt,name=amount,proto3" json:"amount,omitempty"` + Unit string `protobuf:"bytes,2,opt,name=unit,proto3" json:"unit,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Memory) Reset() { + *x = Memory{} + mi := &file_proto_cmd_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Memory) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Memory) ProtoMessage() {} + +func (x *Memory) ProtoReflect() protoreflect.Message { + mi := &file_proto_cmd_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Memory.ProtoReflect.Descriptor instead. +func (*Memory) Descriptor() ([]byte, []int) { + return file_proto_cmd_proto_rawDescGZIP(), []int{5} +} + +func (x *Memory) GetAmount() uint64 { + if x != nil { + return x.Amount + } + return 0 +} + +func (x *Memory) GetUnit() string { + if x != nil { + return x.Unit + } + return "" +} + +type Cell struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Memory *Memory `protobuf:"bytes,2,opt,name=memory,proto3" json:"memory,omitempty"` + Pages []*Pages `protobuf:"bytes,3,rep,name=pages,proto3" json:"pages,omitempty"` + Distances []*Sibling `protobuf:"bytes,4,rep,name=distances,proto3" json:"distances,omitempty"` + Cpus []*CPU `protobuf:"bytes,5,rep,name=cpus,proto3" json:"cpus,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Cell) Reset() { + *x = Cell{} + mi := &file_proto_cmd_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Cell) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Cell) ProtoMessage() {} + +func (x *Cell) ProtoReflect() protoreflect.Message { + mi := &file_proto_cmd_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Cell.ProtoReflect.Descriptor instead. +func (*Cell) Descriptor() ([]byte, []int) { + return file_proto_cmd_proto_rawDescGZIP(), []int{6} +} + +func (x *Cell) GetId() uint32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Cell) GetMemory() *Memory { + if x != nil { + return x.Memory + } + return nil +} + +func (x *Cell) GetPages() []*Pages { + if x != nil { + return x.Pages + } + return nil +} + +func (x *Cell) GetDistances() []*Sibling { + if x != nil { + return x.Distances + } + return nil +} + +func (x *Cell) GetCpus() []*CPU { + if x != nil { + return x.Cpus + } + return nil +} + +type Topology struct { + state protoimpl.MessageState `protogen:"open.v1"` + NumaCells []*Cell `protobuf:"bytes,1,rep,name=numa_cells,json=numaCells,proto3" json:"numa_cells,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Topology) Reset() { + *x = Topology{} + mi := &file_proto_cmd_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Topology) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Topology) ProtoMessage() {} + +func (x *Topology) ProtoReflect() protoreflect.Message { + mi := &file_proto_cmd_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Topology.ProtoReflect.Descriptor instead. +func (*Topology) Descriptor() ([]byte, []int) { + return file_proto_cmd_proto_rawDescGZIP(), []int{7} +} + +func (x *Topology) GetNumaCells() []*Cell { + if x != nil { + return x.NumaCells + } + return nil +} + +type SMBios struct { + state protoimpl.MessageState `protogen:"open.v1"` + Manufacturer string `protobuf:"bytes,1,opt,name=manufacturer,proto3" json:"manufacturer,omitempty"` + Product string `protobuf:"bytes,2,opt,name=product,proto3" json:"product,omitempty"` + Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` + Sku string `protobuf:"bytes,4,opt,name=sku,proto3" json:"sku,omitempty"` + Family string `protobuf:"bytes,5,opt,name=family,proto3" json:"family,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SMBios) Reset() { + *x = SMBios{} + mi := &file_proto_cmd_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SMBios) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SMBios) ProtoMessage() {} + +func (x *SMBios) ProtoReflect() protoreflect.Message { + mi := &file_proto_cmd_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SMBios.ProtoReflect.Descriptor instead. +func (*SMBios) Descriptor() ([]byte, []int) { + return file_proto_cmd_proto_rawDescGZIP(), []int{8} +} + +func (x *SMBios) GetManufacturer() string { + if x != nil { + return x.Manufacturer + } + return "" +} + +func (x *SMBios) GetProduct() string { + if x != nil { + return x.Product + } + return "" +} + +func (x *SMBios) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +func (x *SMBios) GetSku() string { + if x != nil { + return x.Sku + } + return "" +} + +func (x *SMBios) GetFamily() string { + if x != nil { + return x.Family + } + return "" +} + +type DiskInfo struct { + state protoimpl.MessageState `protogen:"open.v1"` + Format string `protobuf:"bytes,1,opt,name=format,proto3" json:"format,omitempty"` + BackingFile string `protobuf:"bytes,2,opt,name=backingFile,proto3" json:"backingFile,omitempty"` + ActualSize uint64 `protobuf:"varint,3,opt,name=actualSize,proto3" json:"actualSize,omitempty"` + VirtualSize uint64 `protobuf:"varint,4,opt,name=virtualSize,proto3" json:"virtualSize,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DiskInfo) Reset() { + *x = DiskInfo{} + mi := &file_proto_cmd_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DiskInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DiskInfo) ProtoMessage() {} + +func (x *DiskInfo) ProtoReflect() protoreflect.Message { + mi := &file_proto_cmd_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DiskInfo.ProtoReflect.Descriptor instead. +func (*DiskInfo) Descriptor() ([]byte, []int) { + return file_proto_cmd_proto_rawDescGZIP(), []int{9} +} + +func (x *DiskInfo) GetFormat() string { + if x != nil { + return x.Format + } + return "" +} + +func (x *DiskInfo) GetBackingFile() string { + if x != nil { + return x.BackingFile + } + return "" +} + +func (x *DiskInfo) GetActualSize() uint64 { + if x != nil { + return x.ActualSize + } + return 0 +} + +func (x *DiskInfo) GetVirtualSize() uint64 { + if x != nil { + return x.VirtualSize + } + return 0 +} + +type ClusterConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + ExpandDisksEnabled bool `protobuf:"varint,1,opt,name=ExpandDisksEnabled,proto3" json:"ExpandDisksEnabled,omitempty"` + FreePageReportingDisabled bool `protobuf:"varint,2,opt,name=FreePageReportingDisabled,proto3" json:"FreePageReportingDisabled,omitempty"` + BochsDisplayForEFIGuests bool `protobuf:"varint,3,opt,name=BochsDisplayForEFIGuests,proto3" json:"BochsDisplayForEFIGuests,omitempty"` + SerialConsoleLogDisabled bool `protobuf:"varint,4,opt,name=SerialConsoleLogDisabled,proto3" json:"SerialConsoleLogDisabled,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ClusterConfig) Reset() { + *x = ClusterConfig{} + mi := &file_proto_cmd_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ClusterConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ClusterConfig) ProtoMessage() {} + +func (x *ClusterConfig) ProtoReflect() protoreflect.Message { + mi := &file_proto_cmd_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ClusterConfig.ProtoReflect.Descriptor instead. +func (*ClusterConfig) Descriptor() ([]byte, []int) { + return file_proto_cmd_proto_rawDescGZIP(), []int{10} +} + +func (x *ClusterConfig) GetExpandDisksEnabled() bool { + if x != nil { + return x.ExpandDisksEnabled + } + return false +} + +func (x *ClusterConfig) GetFreePageReportingDisabled() bool { + if x != nil { + return x.FreePageReportingDisabled + } + return false +} + +func (x *ClusterConfig) GetBochsDisplayForEFIGuests() bool { + if x != nil { + return x.BochsDisplayForEFIGuests + } + return false +} + +func (x *ClusterConfig) GetSerialConsoleLogDisabled() bool { + if x != nil { + return x.SerialConsoleLogDisabled + } + return false +} + +type InterfaceBindingMigration struct { + state protoimpl.MessageState `protogen:"open.v1"` + Method string `protobuf:"bytes,1,opt,name=Method,proto3" json:"Method,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *InterfaceBindingMigration) Reset() { + *x = InterfaceBindingMigration{} + mi := &file_proto_cmd_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *InterfaceBindingMigration) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InterfaceBindingMigration) ProtoMessage() {} + +func (x *InterfaceBindingMigration) ProtoReflect() protoreflect.Message { + mi := &file_proto_cmd_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InterfaceBindingMigration.ProtoReflect.Descriptor instead. +func (*InterfaceBindingMigration) Descriptor() ([]byte, []int) { + return file_proto_cmd_proto_rawDescGZIP(), []int{11} +} + +func (x *InterfaceBindingMigration) GetMethod() string { + if x != nil { + return x.Method + } + return "" +} + +type VirtualMachineOptions struct { + state protoimpl.MessageState `protogen:"open.v1"` + VirtualMachineSMBios *SMBios `protobuf:"bytes,1,opt,name=VirtualMachineSMBios,proto3" json:"VirtualMachineSMBios,omitempty"` + MemBalloonStatsPeriod uint32 `protobuf:"varint,2,opt,name=MemBalloonStatsPeriod,proto3" json:"MemBalloonStatsPeriod,omitempty"` + PreallocatedVolumes []string `protobuf:"bytes,3,rep,name=PreallocatedVolumes,proto3" json:"PreallocatedVolumes,omitempty"` + Topology *Topology `protobuf:"bytes,4,opt,name=topology,proto3" json:"topology,omitempty"` + DisksInfo map[string]*DiskInfo `protobuf:"bytes,5,rep,name=DisksInfo,proto3" json:"DisksInfo,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // Deprecated, use clusterConfig.ExpandDisksEnabled + ExpandDisksEnabled bool `protobuf:"varint,6,opt,name=ExpandDisksEnabled,proto3" json:"ExpandDisksEnabled,omitempty"` + ClusterConfig *ClusterConfig `protobuf:"bytes,7,opt,name=clusterConfig,proto3" json:"clusterConfig,omitempty"` + InterfaceDomainAttachment map[string]string `protobuf:"bytes,8,rep,name=interfaceDomainAttachment,proto3" json:"interfaceDomainAttachment,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + InterfaceMigration map[string]*InterfaceBindingMigration `protobuf:"bytes,9,rep,name=interfaceMigration,proto3" json:"interfaceMigration,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *VirtualMachineOptions) Reset() { + *x = VirtualMachineOptions{} + mi := &file_proto_cmd_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *VirtualMachineOptions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VirtualMachineOptions) ProtoMessage() {} + +func (x *VirtualMachineOptions) ProtoReflect() protoreflect.Message { + mi := &file_proto_cmd_proto_msgTypes[12] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VirtualMachineOptions.ProtoReflect.Descriptor instead. +func (*VirtualMachineOptions) Descriptor() ([]byte, []int) { + return file_proto_cmd_proto_rawDescGZIP(), []int{12} +} + +func (x *VirtualMachineOptions) GetVirtualMachineSMBios() *SMBios { + if x != nil { + return x.VirtualMachineSMBios + } + return nil +} + +func (x *VirtualMachineOptions) GetMemBalloonStatsPeriod() uint32 { + if x != nil { + return x.MemBalloonStatsPeriod + } + return 0 +} + +func (x *VirtualMachineOptions) GetPreallocatedVolumes() []string { + if x != nil { + return x.PreallocatedVolumes + } + return nil +} + +func (x *VirtualMachineOptions) GetTopology() *Topology { + if x != nil { + return x.Topology + } + return nil +} + +func (x *VirtualMachineOptions) GetDisksInfo() map[string]*DiskInfo { + if x != nil { + return x.DisksInfo + } + return nil +} + +func (x *VirtualMachineOptions) GetExpandDisksEnabled() bool { + if x != nil { + return x.ExpandDisksEnabled + } + return false +} + +func (x *VirtualMachineOptions) GetClusterConfig() *ClusterConfig { + if x != nil { + return x.ClusterConfig + } + return nil +} + +func (x *VirtualMachineOptions) GetInterfaceDomainAttachment() map[string]string { + if x != nil { + return x.InterfaceDomainAttachment + } + return nil +} + +func (x *VirtualMachineOptions) GetInterfaceMigration() map[string]*InterfaceBindingMigration { + if x != nil { + return x.InterfaceMigration + } + return nil +} + +type VMIRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Vmi *VMI `protobuf:"bytes,1,opt,name=vmi,proto3" json:"vmi,omitempty"` + Options *VirtualMachineOptions `protobuf:"bytes,2,opt,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *VMIRequest) Reset() { + *x = VMIRequest{} + mi := &file_proto_cmd_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *VMIRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VMIRequest) ProtoMessage() {} + +func (x *VMIRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_cmd_proto_msgTypes[13] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VMIRequest.ProtoReflect.Descriptor instead. +func (*VMIRequest) Descriptor() ([]byte, []int) { + return file_proto_cmd_proto_rawDescGZIP(), []int{13} +} + +func (x *VMIRequest) GetVmi() *VMI { + if x != nil { + return x.Vmi + } + return nil +} + +func (x *VMIRequest) GetOptions() *VirtualMachineOptions { + if x != nil { + return x.Options + } + return nil +} + +type MigrationRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Vmi *VMI `protobuf:"bytes,1,opt,name=vmi,proto3" json:"vmi,omitempty"` + Options []byte `protobuf:"bytes,2,opt,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MigrationRequest) Reset() { + *x = MigrationRequest{} + mi := &file_proto_cmd_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MigrationRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MigrationRequest) ProtoMessage() {} + +func (x *MigrationRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_cmd_proto_msgTypes[14] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MigrationRequest.ProtoReflect.Descriptor instead. +func (*MigrationRequest) Descriptor() ([]byte, []int) { + return file_proto_cmd_proto_rawDescGZIP(), []int{14} +} + +func (x *MigrationRequest) GetVmi() *VMI { + if x != nil { + return x.Vmi + } + return nil +} + +func (x *MigrationRequest) GetOptions() []byte { + if x != nil { + return x.Options + } + return nil +} + +type ExecRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + DomainName string `protobuf:"bytes,1,opt,name=domainName,proto3" json:"domainName,omitempty"` + Command string `protobuf:"bytes,2,opt,name=Command,proto3" json:"Command,omitempty"` + Args []string `protobuf:"bytes,3,rep,name=Args,proto3" json:"Args,omitempty"` + TimeoutSeconds int32 `protobuf:"varint,4,opt,name=timeoutSeconds,proto3" json:"timeoutSeconds,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExecRequest) Reset() { + *x = ExecRequest{} + mi := &file_proto_cmd_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExecRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExecRequest) ProtoMessage() {} + +func (x *ExecRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_cmd_proto_msgTypes[15] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExecRequest.ProtoReflect.Descriptor instead. +func (*ExecRequest) Descriptor() ([]byte, []int) { + return file_proto_cmd_proto_rawDescGZIP(), []int{15} +} + +func (x *ExecRequest) GetDomainName() string { + if x != nil { + return x.DomainName + } + return "" +} + +func (x *ExecRequest) GetCommand() string { + if x != nil { + return x.Command + } + return "" +} + +func (x *ExecRequest) GetArgs() []string { + if x != nil { + return x.Args + } + return nil +} + +func (x *ExecRequest) GetTimeoutSeconds() int32 { + if x != nil { + return x.TimeoutSeconds + } + return 0 +} + +type EmptyRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *EmptyRequest) Reset() { + *x = EmptyRequest{} + mi := &file_proto_cmd_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *EmptyRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EmptyRequest) ProtoMessage() {} + +func (x *EmptyRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_cmd_proto_msgTypes[16] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EmptyRequest.ProtoReflect.Descriptor instead. +func (*EmptyRequest) Descriptor() ([]byte, []int) { + return file_proto_cmd_proto_rawDescGZIP(), []int{16} +} + +type Response struct { + state protoimpl.MessageState `protogen:"open.v1"` + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Response) Reset() { + *x = Response{} + mi := &file_proto_cmd_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Response) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Response) ProtoMessage() {} + +func (x *Response) ProtoReflect() protoreflect.Message { + mi := &file_proto_cmd_proto_msgTypes[17] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Response.ProtoReflect.Descriptor instead. +func (*Response) Descriptor() ([]byte, []int) { + return file_proto_cmd_proto_rawDescGZIP(), []int{17} +} + +func (x *Response) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +func (x *Response) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +type DomainResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Domain string `protobuf:"bytes,2,opt,name=domain,proto3" json:"domain,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DomainResponse) Reset() { + *x = DomainResponse{} + mi := &file_proto_cmd_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DomainResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DomainResponse) ProtoMessage() {} + +func (x *DomainResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_cmd_proto_msgTypes[18] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DomainResponse.ProtoReflect.Descriptor instead. +func (*DomainResponse) Descriptor() ([]byte, []int) { + return file_proto_cmd_proto_rawDescGZIP(), []int{18} +} + +func (x *DomainResponse) GetResponse() *Response { + if x != nil { + return x.Response + } + return nil +} + +func (x *DomainResponse) GetDomain() string { + if x != nil { + return x.Domain + } + return "" +} + +type DomainStatsResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + DomainStats string `protobuf:"bytes,2,opt,name=domainStats,proto3" json:"domainStats,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DomainStatsResponse) Reset() { + *x = DomainStatsResponse{} + mi := &file_proto_cmd_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DomainStatsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DomainStatsResponse) ProtoMessage() {} + +func (x *DomainStatsResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_cmd_proto_msgTypes[19] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DomainStatsResponse.ProtoReflect.Descriptor instead. +func (*DomainStatsResponse) Descriptor() ([]byte, []int) { + return file_proto_cmd_proto_rawDescGZIP(), []int{19} +} + +func (x *DomainStatsResponse) GetResponse() *Response { + if x != nil { + return x.Response + } + return nil +} + +func (x *DomainStatsResponse) GetDomainStats() string { + if x != nil { + return x.DomainStats + } + return "" +} + +type GuestInfoResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + GuestInfoResponse string `protobuf:"bytes,2,opt,name=guestInfoResponse,proto3" json:"guestInfoResponse,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GuestInfoResponse) Reset() { + *x = GuestInfoResponse{} + mi := &file_proto_cmd_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GuestInfoResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GuestInfoResponse) ProtoMessage() {} + +func (x *GuestInfoResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_cmd_proto_msgTypes[20] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GuestInfoResponse.ProtoReflect.Descriptor instead. +func (*GuestInfoResponse) Descriptor() ([]byte, []int) { + return file_proto_cmd_proto_rawDescGZIP(), []int{20} +} + +func (x *GuestInfoResponse) GetResponse() *Response { + if x != nil { + return x.Response + } + return nil +} + +func (x *GuestInfoResponse) GetGuestInfoResponse() string { + if x != nil { + return x.GuestInfoResponse + } + return "" +} + +type GuestUserListResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + GuestUserListResponse string `protobuf:"bytes,2,opt,name=guestUserListResponse,proto3" json:"guestUserListResponse,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GuestUserListResponse) Reset() { + *x = GuestUserListResponse{} + mi := &file_proto_cmd_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GuestUserListResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GuestUserListResponse) ProtoMessage() {} + +func (x *GuestUserListResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_cmd_proto_msgTypes[21] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GuestUserListResponse.ProtoReflect.Descriptor instead. +func (*GuestUserListResponse) Descriptor() ([]byte, []int) { + return file_proto_cmd_proto_rawDescGZIP(), []int{21} +} + +func (x *GuestUserListResponse) GetResponse() *Response { + if x != nil { + return x.Response + } + return nil +} + +func (x *GuestUserListResponse) GetGuestUserListResponse() string { + if x != nil { + return x.GuestUserListResponse + } + return "" +} + +type GuestFilesystemsResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + GuestFilesystemsResponse string `protobuf:"bytes,2,opt,name=guestFilesystemsResponse,proto3" json:"guestFilesystemsResponse,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GuestFilesystemsResponse) Reset() { + *x = GuestFilesystemsResponse{} + mi := &file_proto_cmd_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GuestFilesystemsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GuestFilesystemsResponse) ProtoMessage() {} + +func (x *GuestFilesystemsResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_cmd_proto_msgTypes[22] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GuestFilesystemsResponse.ProtoReflect.Descriptor instead. +func (*GuestFilesystemsResponse) Descriptor() ([]byte, []int) { + return file_proto_cmd_proto_rawDescGZIP(), []int{22} +} + +func (x *GuestFilesystemsResponse) GetResponse() *Response { + if x != nil { + return x.Response + } + return nil +} + +func (x *GuestFilesystemsResponse) GetGuestFilesystemsResponse() string { + if x != nil { + return x.GuestFilesystemsResponse + } + return "" +} + +type ExecResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + ExitCode int32 `protobuf:"varint,2,opt,name=exitCode,proto3" json:"exitCode,omitempty"` + StdOut string `protobuf:"bytes,3,opt,name=stdOut,proto3" json:"stdOut,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExecResponse) Reset() { + *x = ExecResponse{} + mi := &file_proto_cmd_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExecResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExecResponse) ProtoMessage() {} + +func (x *ExecResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_cmd_proto_msgTypes[23] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExecResponse.ProtoReflect.Descriptor instead. +func (*ExecResponse) Descriptor() ([]byte, []int) { + return file_proto_cmd_proto_rawDescGZIP(), []int{23} +} + +func (x *ExecResponse) GetResponse() *Response { + if x != nil { + return x.Response + } + return nil +} + +func (x *ExecResponse) GetExitCode() int32 { + if x != nil { + return x.ExitCode + } + return 0 +} + +func (x *ExecResponse) GetStdOut() string { + if x != nil { + return x.StdOut + } + return "" +} + +type GuestPingRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + DomainName string `protobuf:"bytes,1,opt,name=domainName,proto3" json:"domainName,omitempty"` + TimeoutSeconds int32 `protobuf:"varint,2,opt,name=timeoutSeconds,proto3" json:"timeoutSeconds,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GuestPingRequest) Reset() { + *x = GuestPingRequest{} + mi := &file_proto_cmd_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GuestPingRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GuestPingRequest) ProtoMessage() {} + +func (x *GuestPingRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_cmd_proto_msgTypes[24] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GuestPingRequest.ProtoReflect.Descriptor instead. +func (*GuestPingRequest) Descriptor() ([]byte, []int) { + return file_proto_cmd_proto_rawDescGZIP(), []int{24} +} + +func (x *GuestPingRequest) GetDomainName() string { + if x != nil { + return x.DomainName + } + return "" +} + +func (x *GuestPingRequest) GetTimeoutSeconds() int32 { + if x != nil { + return x.TimeoutSeconds + } + return 0 +} + +type GuestPingResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GuestPingResponse) Reset() { + *x = GuestPingResponse{} + mi := &file_proto_cmd_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GuestPingResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GuestPingResponse) ProtoMessage() {} + +func (x *GuestPingResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_cmd_proto_msgTypes[25] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GuestPingResponse.ProtoReflect.Descriptor instead. +func (*GuestPingResponse) Descriptor() ([]byte, []int) { + return file_proto_cmd_proto_rawDescGZIP(), []int{25} +} + +func (x *GuestPingResponse) GetResponse() *Response { + if x != nil { + return x.Response + } + return nil +} + +type FreezeRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Vmi *VMI `protobuf:"bytes,1,opt,name=vmi,proto3" json:"vmi,omitempty"` + UnfreezeTimeoutSeconds int32 `protobuf:"varint,2,opt,name=unfreezeTimeoutSeconds,proto3" json:"unfreezeTimeoutSeconds,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *FreezeRequest) Reset() { + *x = FreezeRequest{} + mi := &file_proto_cmd_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FreezeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FreezeRequest) ProtoMessage() {} + +func (x *FreezeRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_cmd_proto_msgTypes[26] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FreezeRequest.ProtoReflect.Descriptor instead. +func (*FreezeRequest) Descriptor() ([]byte, []int) { + return file_proto_cmd_proto_rawDescGZIP(), []int{26} +} + +func (x *FreezeRequest) GetVmi() *VMI { + if x != nil { + return x.Vmi + } + return nil +} + +func (x *FreezeRequest) GetUnfreezeTimeoutSeconds() int32 { + if x != nil { + return x.UnfreezeTimeoutSeconds + } + return 0 +} + +type MemoryDumpRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Vmi *VMI `protobuf:"bytes,1,opt,name=vmi,proto3" json:"vmi,omitempty"` + DumpPath string `protobuf:"bytes,2,opt,name=dumpPath,proto3" json:"dumpPath,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MemoryDumpRequest) Reset() { + *x = MemoryDumpRequest{} + mi := &file_proto_cmd_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MemoryDumpRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MemoryDumpRequest) ProtoMessage() {} + +func (x *MemoryDumpRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_cmd_proto_msgTypes[27] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MemoryDumpRequest.ProtoReflect.Descriptor instead. +func (*MemoryDumpRequest) Descriptor() ([]byte, []int) { + return file_proto_cmd_proto_rawDescGZIP(), []int{27} +} + +func (x *MemoryDumpRequest) GetVmi() *VMI { + if x != nil { + return x.Vmi + } + return nil +} + +func (x *MemoryDumpRequest) GetDumpPath() string { + if x != nil { + return x.DumpPath + } + return "" +} + +type SEVInfoResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + SevInfo []byte `protobuf:"bytes,2,opt,name=sevInfo,proto3" json:"sevInfo,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SEVInfoResponse) Reset() { + *x = SEVInfoResponse{} + mi := &file_proto_cmd_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SEVInfoResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SEVInfoResponse) ProtoMessage() {} + +func (x *SEVInfoResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_cmd_proto_msgTypes[28] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SEVInfoResponse.ProtoReflect.Descriptor instead. +func (*SEVInfoResponse) Descriptor() ([]byte, []int) { + return file_proto_cmd_proto_rawDescGZIP(), []int{28} +} + +func (x *SEVInfoResponse) GetResponse() *Response { + if x != nil { + return x.Response + } + return nil +} + +func (x *SEVInfoResponse) GetSevInfo() []byte { + if x != nil { + return x.SevInfo + } + return nil +} + +type LaunchMeasurementResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + LaunchMeasurement []byte `protobuf:"bytes,2,opt,name=launchMeasurement,proto3" json:"launchMeasurement,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *LaunchMeasurementResponse) Reset() { + *x = LaunchMeasurementResponse{} + mi := &file_proto_cmd_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *LaunchMeasurementResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LaunchMeasurementResponse) ProtoMessage() {} + +func (x *LaunchMeasurementResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_cmd_proto_msgTypes[29] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LaunchMeasurementResponse.ProtoReflect.Descriptor instead. +func (*LaunchMeasurementResponse) Descriptor() ([]byte, []int) { + return file_proto_cmd_proto_rawDescGZIP(), []int{29} +} + +func (x *LaunchMeasurementResponse) GetResponse() *Response { + if x != nil { + return x.Response + } + return nil +} + +func (x *LaunchMeasurementResponse) GetLaunchMeasurement() []byte { + if x != nil { + return x.LaunchMeasurement + } + return nil +} + +type InjectLaunchSecretRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Vmi *VMI `protobuf:"bytes,1,opt,name=vmi,proto3" json:"vmi,omitempty"` + Options []byte `protobuf:"bytes,2,opt,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *InjectLaunchSecretRequest) Reset() { + *x = InjectLaunchSecretRequest{} + mi := &file_proto_cmd_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *InjectLaunchSecretRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InjectLaunchSecretRequest) ProtoMessage() {} + +func (x *InjectLaunchSecretRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_cmd_proto_msgTypes[30] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InjectLaunchSecretRequest.ProtoReflect.Descriptor instead. +func (*InjectLaunchSecretRequest) Descriptor() ([]byte, []int) { + return file_proto_cmd_proto_rawDescGZIP(), []int{30} +} + +func (x *InjectLaunchSecretRequest) GetVmi() *VMI { + if x != nil { + return x.Vmi + } + return nil +} + +func (x *InjectLaunchSecretRequest) GetOptions() []byte { + if x != nil { + return x.Options + } + return nil +} + +type VMIChecksumResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Checksum string `protobuf:"bytes,2,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *VMIChecksumResponse) Reset() { + *x = VMIChecksumResponse{} + mi := &file_proto_cmd_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *VMIChecksumResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VMIChecksumResponse) ProtoMessage() {} + +func (x *VMIChecksumResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_cmd_proto_msgTypes[31] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VMIChecksumResponse.ProtoReflect.Descriptor instead. +func (*VMIChecksumResponse) Descriptor() ([]byte, []int) { + return file_proto_cmd_proto_rawDescGZIP(), []int{31} +} + +func (x *VMIChecksumResponse) GetResponse() *Response { + if x != nil { + return x.Response + } + return nil +} + +func (x *VMIChecksumResponse) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type MigrationProxyRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Action MigrationProxyAction `protobuf:"varint,1,opt,name=action,proto3,enum=kubevirt.cmd.v1.MigrationProxyAction" json:"action,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MigrationProxyRequest) Reset() { + *x = MigrationProxyRequest{} + mi := &file_proto_cmd_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MigrationProxyRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MigrationProxyRequest) ProtoMessage() {} + +func (x *MigrationProxyRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_cmd_proto_msgTypes[32] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MigrationProxyRequest.ProtoReflect.Descriptor instead. +func (*MigrationProxyRequest) Descriptor() ([]byte, []int) { + return file_proto_cmd_proto_rawDescGZIP(), []int{32} +} + +func (x *MigrationProxyRequest) GetAction() MigrationProxyAction { + if x != nil { + return x.Action + } + return MigrationProxyAction_START +} + +var File_proto_cmd_proto protoreflect.FileDescriptor + +const file_proto_cmd_proto_rawDesc = "" + + "\n" + + "\x0fproto/cmd.proto\x12\x0fkubevirt.cmd.v1\"f\n" + + "\x13QemuVersionResponse\x125\n" + + "\bresponse\x18\x01 \x01(\v2\x19.kubevirt.cmd.v1.ResponseR\bresponse\x12\x18\n" + + "\aversion\x18\x02 \x01(\tR\aversion\"\x1f\n" + + "\x03VMI\x12\x18\n" + + "\avmiJson\x18\x01 \x01(\fR\avmiJson\"1\n" + + "\x03CPU\x12\x0e\n" + + "\x02id\x18\x01 \x01(\rR\x02id\x12\x1a\n" + + "\bsiblings\x18\x02 \x03(\rR\bsiblings\"/\n" + + "\aSibling\x12\x0e\n" + + "\x02id\x18\x01 \x01(\rR\x02id\x12\x14\n" + + "\x05value\x18\x02 \x01(\x04R\x05value\"E\n" + + "\x05Pages\x12\x14\n" + + "\x05count\x18\x01 \x01(\x04R\x05count\x12\x12\n" + + "\x04unit\x18\x02 \x01(\tR\x04unit\x12\x12\n" + + "\x04size\x18\x03 \x01(\rR\x04size\"4\n" + + "\x06Memory\x12\x16\n" + + "\x06amount\x18\x01 \x01(\x04R\x06amount\x12\x12\n" + + "\x04unit\x18\x02 \x01(\tR\x04unit\"\xd7\x01\n" + + "\x04Cell\x12\x0e\n" + + "\x02id\x18\x01 \x01(\rR\x02id\x12/\n" + + "\x06memory\x18\x02 \x01(\v2\x17.kubevirt.cmd.v1.MemoryR\x06memory\x12,\n" + + "\x05pages\x18\x03 \x03(\v2\x16.kubevirt.cmd.v1.PagesR\x05pages\x126\n" + + "\tdistances\x18\x04 \x03(\v2\x18.kubevirt.cmd.v1.SiblingR\tdistances\x12(\n" + + "\x04cpus\x18\x05 \x03(\v2\x14.kubevirt.cmd.v1.CPUR\x04cpus\"@\n" + + "\bTopology\x124\n" + + "\n" + + "numa_cells\x18\x01 \x03(\v2\x15.kubevirt.cmd.v1.CellR\tnumaCells\"\x8a\x01\n" + + "\x06SMBios\x12\"\n" + + "\fmanufacturer\x18\x01 \x01(\tR\fmanufacturer\x12\x18\n" + + "\aproduct\x18\x02 \x01(\tR\aproduct\x12\x18\n" + + "\aversion\x18\x03 \x01(\tR\aversion\x12\x10\n" + + "\x03sku\x18\x04 \x01(\tR\x03sku\x12\x16\n" + + "\x06family\x18\x05 \x01(\tR\x06family\"\x86\x01\n" + + "\bDiskInfo\x12\x16\n" + + "\x06format\x18\x01 \x01(\tR\x06format\x12 \n" + + "\vbackingFile\x18\x02 \x01(\tR\vbackingFile\x12\x1e\n" + + "\n" + + "actualSize\x18\x03 \x01(\x04R\n" + + "actualSize\x12 \n" + + "\vvirtualSize\x18\x04 \x01(\x04R\vvirtualSize\"\xf5\x01\n" + + "\rClusterConfig\x12.\n" + + "\x12ExpandDisksEnabled\x18\x01 \x01(\bR\x12ExpandDisksEnabled\x12<\n" + + "\x19FreePageReportingDisabled\x18\x02 \x01(\bR\x19FreePageReportingDisabled\x12:\n" + + "\x18BochsDisplayForEFIGuests\x18\x03 \x01(\bR\x18BochsDisplayForEFIGuests\x12:\n" + + "\x18SerialConsoleLogDisabled\x18\x04 \x01(\bR\x18SerialConsoleLogDisabled\"3\n" + + "\x19InterfaceBindingMigration\x12\x16\n" + + "\x06Method\x18\x01 \x01(\tR\x06Method\"\xde\a\n" + + "\x15VirtualMachineOptions\x12K\n" + + "\x14VirtualMachineSMBios\x18\x01 \x01(\v2\x17.kubevirt.cmd.v1.SMBiosR\x14VirtualMachineSMBios\x124\n" + + "\x15MemBalloonStatsPeriod\x18\x02 \x01(\rR\x15MemBalloonStatsPeriod\x120\n" + + "\x13PreallocatedVolumes\x18\x03 \x03(\tR\x13PreallocatedVolumes\x125\n" + + "\btopology\x18\x04 \x01(\v2\x19.kubevirt.cmd.v1.TopologyR\btopology\x12S\n" + + "\tDisksInfo\x18\x05 \x03(\v25.kubevirt.cmd.v1.VirtualMachineOptions.DisksInfoEntryR\tDisksInfo\x12.\n" + + "\x12ExpandDisksEnabled\x18\x06 \x01(\bR\x12ExpandDisksEnabled\x12D\n" + + "\rclusterConfig\x18\a \x01(\v2\x1e.kubevirt.cmd.v1.ClusterConfigR\rclusterConfig\x12\x83\x01\n" + + "\x19interfaceDomainAttachment\x18\b \x03(\v2E.kubevirt.cmd.v1.VirtualMachineOptions.InterfaceDomainAttachmentEntryR\x19interfaceDomainAttachment\x12n\n" + + "\x12interfaceMigration\x18\t \x03(\v2>.kubevirt.cmd.v1.VirtualMachineOptions.InterfaceMigrationEntryR\x12interfaceMigration\x1aW\n" + + "\x0eDisksInfoEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12/\n" + + "\x05value\x18\x02 \x01(\v2\x19.kubevirt.cmd.v1.DiskInfoR\x05value:\x028\x01\x1aL\n" + + "\x1eInterfaceDomainAttachmentEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1aq\n" + + "\x17InterfaceMigrationEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12@\n" + + "\x05value\x18\x02 \x01(\v2*.kubevirt.cmd.v1.InterfaceBindingMigrationR\x05value:\x028\x01\"v\n" + + "\n" + + "VMIRequest\x12&\n" + + "\x03vmi\x18\x01 \x01(\v2\x14.kubevirt.cmd.v1.VMIR\x03vmi\x12@\n" + + "\aoptions\x18\x02 \x01(\v2&.kubevirt.cmd.v1.VirtualMachineOptionsR\aoptions\"T\n" + + "\x10MigrationRequest\x12&\n" + + "\x03vmi\x18\x01 \x01(\v2\x14.kubevirt.cmd.v1.VMIR\x03vmi\x12\x18\n" + + "\aoptions\x18\x02 \x01(\fR\aoptions\"\x83\x01\n" + + "\vExecRequest\x12\x1e\n" + + "\n" + + "domainName\x18\x01 \x01(\tR\n" + + "domainName\x12\x18\n" + + "\aCommand\x18\x02 \x01(\tR\aCommand\x12\x12\n" + + "\x04Args\x18\x03 \x03(\tR\x04Args\x12&\n" + + "\x0etimeoutSeconds\x18\x04 \x01(\x05R\x0etimeoutSeconds\"\x0e\n" + + "\fEmptyRequest\">\n" + + "\bResponse\x12\x18\n" + + "\asuccess\x18\x01 \x01(\bR\asuccess\x12\x18\n" + + "\amessage\x18\x02 \x01(\tR\amessage\"_\n" + + "\x0eDomainResponse\x125\n" + + "\bresponse\x18\x01 \x01(\v2\x19.kubevirt.cmd.v1.ResponseR\bresponse\x12\x16\n" + + "\x06domain\x18\x02 \x01(\tR\x06domain\"n\n" + + "\x13DomainStatsResponse\x125\n" + + "\bresponse\x18\x01 \x01(\v2\x19.kubevirt.cmd.v1.ResponseR\bresponse\x12 \n" + + "\vdomainStats\x18\x02 \x01(\tR\vdomainStats\"x\n" + + "\x11GuestInfoResponse\x125\n" + + "\bresponse\x18\x01 \x01(\v2\x19.kubevirt.cmd.v1.ResponseR\bresponse\x12,\n" + + "\x11guestInfoResponse\x18\x02 \x01(\tR\x11guestInfoResponse\"\x84\x01\n" + + "\x15GuestUserListResponse\x125\n" + + "\bresponse\x18\x01 \x01(\v2\x19.kubevirt.cmd.v1.ResponseR\bresponse\x124\n" + + "\x15guestUserListResponse\x18\x02 \x01(\tR\x15guestUserListResponse\"\x8d\x01\n" + + "\x18GuestFilesystemsResponse\x125\n" + + "\bresponse\x18\x01 \x01(\v2\x19.kubevirt.cmd.v1.ResponseR\bresponse\x12:\n" + + "\x18guestFilesystemsResponse\x18\x02 \x01(\tR\x18guestFilesystemsResponse\"y\n" + + "\fExecResponse\x125\n" + + "\bresponse\x18\x01 \x01(\v2\x19.kubevirt.cmd.v1.ResponseR\bresponse\x12\x1a\n" + + "\bexitCode\x18\x02 \x01(\x05R\bexitCode\x12\x16\n" + + "\x06stdOut\x18\x03 \x01(\tR\x06stdOut\"Z\n" + + "\x10GuestPingRequest\x12\x1e\n" + + "\n" + + "domainName\x18\x01 \x01(\tR\n" + + "domainName\x12&\n" + + "\x0etimeoutSeconds\x18\x02 \x01(\x05R\x0etimeoutSeconds\"J\n" + + "\x11GuestPingResponse\x125\n" + + "\bresponse\x18\x01 \x01(\v2\x19.kubevirt.cmd.v1.ResponseR\bresponse\"o\n" + + "\rFreezeRequest\x12&\n" + + "\x03vmi\x18\x01 \x01(\v2\x14.kubevirt.cmd.v1.VMIR\x03vmi\x126\n" + + "\x16unfreezeTimeoutSeconds\x18\x02 \x01(\x05R\x16unfreezeTimeoutSeconds\"W\n" + + "\x11MemoryDumpRequest\x12&\n" + + "\x03vmi\x18\x01 \x01(\v2\x14.kubevirt.cmd.v1.VMIR\x03vmi\x12\x1a\n" + + "\bdumpPath\x18\x02 \x01(\tR\bdumpPath\"b\n" + + "\x0fSEVInfoResponse\x125\n" + + "\bresponse\x18\x01 \x01(\v2\x19.kubevirt.cmd.v1.ResponseR\bresponse\x12\x18\n" + + "\asevInfo\x18\x02 \x01(\fR\asevInfo\"\x80\x01\n" + + "\x19LaunchMeasurementResponse\x125\n" + + "\bresponse\x18\x01 \x01(\v2\x19.kubevirt.cmd.v1.ResponseR\bresponse\x12,\n" + + "\x11launchMeasurement\x18\x02 \x01(\fR\x11launchMeasurement\"]\n" + + "\x19InjectLaunchSecretRequest\x12&\n" + + "\x03vmi\x18\x01 \x01(\v2\x14.kubevirt.cmd.v1.VMIR\x03vmi\x12\x18\n" + + "\aoptions\x18\x02 \x01(\fR\aoptions\"h\n" + + "\x13VMIChecksumResponse\x125\n" + + "\bresponse\x18\x01 \x01(\v2\x19.kubevirt.cmd.v1.ResponseR\bresponse\x12\x1a\n" + + "\bchecksum\x18\x02 \x01(\tR\bchecksum\"V\n" + + "\x15MigrationProxyRequest\x12=\n" + + "\x06action\x18\x01 \x01(\x0e2%.kubevirt.cmd.v1.MigrationProxyActionR\x06action*+\n" + + "\x14MigrationProxyAction\x12\t\n" + + "\x05START\x10\x00\x12\b\n" + + "\x04STOP\x10\x012\xad\x15\n" + + "\x03Cmd\x12N\n" + + "\x12SyncVirtualMachine\x12\x1b.kubevirt.cmd.v1.VMIRequest\x1a\x19.kubevirt.cmd.v1.Response\"\x00\x12O\n" + + "\x13PauseVirtualMachine\x12\x1b.kubevirt.cmd.v1.VMIRequest\x1a\x19.kubevirt.cmd.v1.Response\"\x00\x12Q\n" + + "\x15UnpauseVirtualMachine\x12\x1b.kubevirt.cmd.v1.VMIRequest\x1a\x19.kubevirt.cmd.v1.Response\"\x00\x12S\n" + + "\x14FreezeVirtualMachine\x12\x1e.kubevirt.cmd.v1.FreezeRequest\x1a\x19.kubevirt.cmd.v1.Response\"\x00\x12R\n" + + "\x16UnfreezeVirtualMachine\x12\x1b.kubevirt.cmd.v1.VMIRequest\x1a\x19.kubevirt.cmd.v1.Response\"\x00\x12T\n" + + "\x18SoftRebootVirtualMachine\x12\x1b.kubevirt.cmd.v1.VMIRequest\x1a\x19.kubevirt.cmd.v1.Response\"\x00\x12R\n" + + "\x16ShutdownVirtualMachine\x12\x1b.kubevirt.cmd.v1.VMIRequest\x1a\x19.kubevirt.cmd.v1.Response\"\x00\x12N\n" + + "\x12KillVirtualMachine\x12\x1b.kubevirt.cmd.v1.VMIRequest\x1a\x19.kubevirt.cmd.v1.Response\"\x00\x12P\n" + + "\x14DeleteVirtualMachine\x12\x1b.kubevirt.cmd.v1.VMIRequest\x1a\x19.kubevirt.cmd.v1.Response\"\x00\x12W\n" + + "\x15MigrateVirtualMachine\x12!.kubevirt.cmd.v1.MigrationRequest\x1a\x19.kubevirt.cmd.v1.Response\"\x00\x12O\n" + + "\x13SyncMigrationTarget\x12\x1b.kubevirt.cmd.v1.VMIRequest\x1a\x19.kubevirt.cmd.v1.Response\"\x00\x12Y\n" + + "\x1dCancelVirtualMachineMigration\x12\x1b.kubevirt.cmd.v1.VMIRequest\x1a\x19.kubevirt.cmd.v1.Response\"\x00\x12R\n" + + "\x16SignalTargetPodCleanup\x12\x1b.kubevirt.cmd.v1.VMIRequest\x1a\x19.kubevirt.cmd.v1.Response\"\x00\x12[\n" + + "\x1fFinalizeVirtualMachineMigration\x12\x1b.kubevirt.cmd.v1.VMIRequest\x1a\x19.kubevirt.cmd.v1.Response\"\x00\x12N\n" + + "\x12HotplugHostDevices\x12\x1b.kubevirt.cmd.v1.VMIRequest\x1a\x19.kubevirt.cmd.v1.Response\"\x00\x12M\n" + + "\tGetDomain\x12\x1d.kubevirt.cmd.v1.EmptyRequest\x1a\x1f.kubevirt.cmd.v1.DomainResponse\"\x00\x12W\n" + + "\x0eGetDomainStats\x12\x1d.kubevirt.cmd.v1.EmptyRequest\x1a$.kubevirt.cmd.v1.DomainStatsResponse\"\x00\x12S\n" + + "\fGetGuestInfo\x12\x1d.kubevirt.cmd.v1.EmptyRequest\x1a\".kubevirt.cmd.v1.GuestInfoResponse\"\x00\x12S\n" + + "\bGetUsers\x12\x1d.kubevirt.cmd.v1.EmptyRequest\x1a&.kubevirt.cmd.v1.GuestUserListResponse\"\x00\x12\\\n" + + "\x0eGetFilesystems\x12\x1d.kubevirt.cmd.v1.EmptyRequest\x1a).kubevirt.cmd.v1.GuestFilesystemsResponse\"\x00\x12B\n" + + "\x04Ping\x12\x1d.kubevirt.cmd.v1.EmptyRequest\x1a\x19.kubevirt.cmd.v1.Response\"\x00\x12E\n" + + "\x04Exec\x12\x1c.kubevirt.cmd.v1.ExecRequest\x1a\x1d.kubevirt.cmd.v1.ExecResponse\"\x00\x12T\n" + + "\tGuestPing\x12!.kubevirt.cmd.v1.GuestPingRequest\x1a\".kubevirt.cmd.v1.GuestPingResponse\"\x00\x12[\n" + + "\x18VirtualMachineMemoryDump\x12\".kubevirt.cmd.v1.MemoryDumpRequest\x1a\x19.kubevirt.cmd.v1.Response\"\x00\x12W\n" + + "\x0eGetQemuVersion\x12\x1d.kubevirt.cmd.v1.EmptyRequest\x1a$.kubevirt.cmd.v1.QemuVersionResponse\"\x00\x12R\n" + + "\x16SyncVirtualMachineCPUs\x12\x1b.kubevirt.cmd.v1.VMIRequest\x1a\x19.kubevirt.cmd.v1.Response\"\x00\x12T\n" + + "\x18SyncVirtualMachineMemory\x12\x1b.kubevirt.cmd.v1.VMIRequest\x1a\x19.kubevirt.cmd.v1.Response\"\x00\x12O\n" + + "\n" + + "GetSEVInfo\x12\x1d.kubevirt.cmd.v1.EmptyRequest\x1a .kubevirt.cmd.v1.SEVInfoResponse\"\x00\x12a\n" + + "\x14GetLaunchMeasurement\x12\x1b.kubevirt.cmd.v1.VMIRequest\x1a*.kubevirt.cmd.v1.LaunchMeasurementResponse\"\x00\x12]\n" + + "\x12InjectLaunchSecret\x12*.kubevirt.cmd.v1.InjectLaunchSecretRequest\x1a\x19.kubevirt.cmd.v1.Response\"\x00\x12^\n" + + "\x15GetAppliedVMIChecksum\x12\x1d.kubevirt.cmd.v1.EmptyRequest\x1a$.kubevirt.cmd.v1.VMIChecksumResponse\"\x00\x12S\n" + + "\x0eMigrationProxy\x12&.kubevirt.cmd.v1.MigrationProxyRequest\x1a\x19.kubevirt.cmd.v1.ResponseB*Z(virt-launcher-plug/pkg/api/generated/cmdb\x06proto3" + +var ( + file_proto_cmd_proto_rawDescOnce sync.Once + file_proto_cmd_proto_rawDescData []byte +) + +func file_proto_cmd_proto_rawDescGZIP() []byte { + file_proto_cmd_proto_rawDescOnce.Do(func() { + file_proto_cmd_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_proto_cmd_proto_rawDesc), len(file_proto_cmd_proto_rawDesc))) + }) + return file_proto_cmd_proto_rawDescData +} + +var file_proto_cmd_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_proto_cmd_proto_msgTypes = make([]protoimpl.MessageInfo, 36) +var file_proto_cmd_proto_goTypes = []any{ + (MigrationProxyAction)(0), // 0: kubevirt.cmd.v1.MigrationProxyAction + (*QemuVersionResponse)(nil), // 1: kubevirt.cmd.v1.QemuVersionResponse + (*VMI)(nil), // 2: kubevirt.cmd.v1.VMI + (*CPU)(nil), // 3: kubevirt.cmd.v1.CPU + (*Sibling)(nil), // 4: kubevirt.cmd.v1.Sibling + (*Pages)(nil), // 5: kubevirt.cmd.v1.Pages + (*Memory)(nil), // 6: kubevirt.cmd.v1.Memory + (*Cell)(nil), // 7: kubevirt.cmd.v1.Cell + (*Topology)(nil), // 8: kubevirt.cmd.v1.Topology + (*SMBios)(nil), // 9: kubevirt.cmd.v1.SMBios + (*DiskInfo)(nil), // 10: kubevirt.cmd.v1.DiskInfo + (*ClusterConfig)(nil), // 11: kubevirt.cmd.v1.ClusterConfig + (*InterfaceBindingMigration)(nil), // 12: kubevirt.cmd.v1.InterfaceBindingMigration + (*VirtualMachineOptions)(nil), // 13: kubevirt.cmd.v1.VirtualMachineOptions + (*VMIRequest)(nil), // 14: kubevirt.cmd.v1.VMIRequest + (*MigrationRequest)(nil), // 15: kubevirt.cmd.v1.MigrationRequest + (*ExecRequest)(nil), // 16: kubevirt.cmd.v1.ExecRequest + (*EmptyRequest)(nil), // 17: kubevirt.cmd.v1.EmptyRequest + (*Response)(nil), // 18: kubevirt.cmd.v1.Response + (*DomainResponse)(nil), // 19: kubevirt.cmd.v1.DomainResponse + (*DomainStatsResponse)(nil), // 20: kubevirt.cmd.v1.DomainStatsResponse + (*GuestInfoResponse)(nil), // 21: kubevirt.cmd.v1.GuestInfoResponse + (*GuestUserListResponse)(nil), // 22: kubevirt.cmd.v1.GuestUserListResponse + (*GuestFilesystemsResponse)(nil), // 23: kubevirt.cmd.v1.GuestFilesystemsResponse + (*ExecResponse)(nil), // 24: kubevirt.cmd.v1.ExecResponse + (*GuestPingRequest)(nil), // 25: kubevirt.cmd.v1.GuestPingRequest + (*GuestPingResponse)(nil), // 26: kubevirt.cmd.v1.GuestPingResponse + (*FreezeRequest)(nil), // 27: kubevirt.cmd.v1.FreezeRequest + (*MemoryDumpRequest)(nil), // 28: kubevirt.cmd.v1.MemoryDumpRequest + (*SEVInfoResponse)(nil), // 29: kubevirt.cmd.v1.SEVInfoResponse + (*LaunchMeasurementResponse)(nil), // 30: kubevirt.cmd.v1.LaunchMeasurementResponse + (*InjectLaunchSecretRequest)(nil), // 31: kubevirt.cmd.v1.InjectLaunchSecretRequest + (*VMIChecksumResponse)(nil), // 32: kubevirt.cmd.v1.VMIChecksumResponse + (*MigrationProxyRequest)(nil), // 33: kubevirt.cmd.v1.MigrationProxyRequest + nil, // 34: kubevirt.cmd.v1.VirtualMachineOptions.DisksInfoEntry + nil, // 35: kubevirt.cmd.v1.VirtualMachineOptions.InterfaceDomainAttachmentEntry + nil, // 36: kubevirt.cmd.v1.VirtualMachineOptions.InterfaceMigrationEntry +} +var file_proto_cmd_proto_depIdxs = []int32{ + 18, // 0: kubevirt.cmd.v1.QemuVersionResponse.response:type_name -> kubevirt.cmd.v1.Response + 6, // 1: kubevirt.cmd.v1.Cell.memory:type_name -> kubevirt.cmd.v1.Memory + 5, // 2: kubevirt.cmd.v1.Cell.pages:type_name -> kubevirt.cmd.v1.Pages + 4, // 3: kubevirt.cmd.v1.Cell.distances:type_name -> kubevirt.cmd.v1.Sibling + 3, // 4: kubevirt.cmd.v1.Cell.cpus:type_name -> kubevirt.cmd.v1.CPU + 7, // 5: kubevirt.cmd.v1.Topology.numa_cells:type_name -> kubevirt.cmd.v1.Cell + 9, // 6: kubevirt.cmd.v1.VirtualMachineOptions.VirtualMachineSMBios:type_name -> kubevirt.cmd.v1.SMBios + 8, // 7: kubevirt.cmd.v1.VirtualMachineOptions.topology:type_name -> kubevirt.cmd.v1.Topology + 34, // 8: kubevirt.cmd.v1.VirtualMachineOptions.DisksInfo:type_name -> kubevirt.cmd.v1.VirtualMachineOptions.DisksInfoEntry + 11, // 9: kubevirt.cmd.v1.VirtualMachineOptions.clusterConfig:type_name -> kubevirt.cmd.v1.ClusterConfig + 35, // 10: kubevirt.cmd.v1.VirtualMachineOptions.interfaceDomainAttachment:type_name -> kubevirt.cmd.v1.VirtualMachineOptions.InterfaceDomainAttachmentEntry + 36, // 11: kubevirt.cmd.v1.VirtualMachineOptions.interfaceMigration:type_name -> kubevirt.cmd.v1.VirtualMachineOptions.InterfaceMigrationEntry + 2, // 12: kubevirt.cmd.v1.VMIRequest.vmi:type_name -> kubevirt.cmd.v1.VMI + 13, // 13: kubevirt.cmd.v1.VMIRequest.options:type_name -> kubevirt.cmd.v1.VirtualMachineOptions + 2, // 14: kubevirt.cmd.v1.MigrationRequest.vmi:type_name -> kubevirt.cmd.v1.VMI + 18, // 15: kubevirt.cmd.v1.DomainResponse.response:type_name -> kubevirt.cmd.v1.Response + 18, // 16: kubevirt.cmd.v1.DomainStatsResponse.response:type_name -> kubevirt.cmd.v1.Response + 18, // 17: kubevirt.cmd.v1.GuestInfoResponse.response:type_name -> kubevirt.cmd.v1.Response + 18, // 18: kubevirt.cmd.v1.GuestUserListResponse.response:type_name -> kubevirt.cmd.v1.Response + 18, // 19: kubevirt.cmd.v1.GuestFilesystemsResponse.response:type_name -> kubevirt.cmd.v1.Response + 18, // 20: kubevirt.cmd.v1.ExecResponse.response:type_name -> kubevirt.cmd.v1.Response + 18, // 21: kubevirt.cmd.v1.GuestPingResponse.response:type_name -> kubevirt.cmd.v1.Response + 2, // 22: kubevirt.cmd.v1.FreezeRequest.vmi:type_name -> kubevirt.cmd.v1.VMI + 2, // 23: kubevirt.cmd.v1.MemoryDumpRequest.vmi:type_name -> kubevirt.cmd.v1.VMI + 18, // 24: kubevirt.cmd.v1.SEVInfoResponse.response:type_name -> kubevirt.cmd.v1.Response + 18, // 25: kubevirt.cmd.v1.LaunchMeasurementResponse.response:type_name -> kubevirt.cmd.v1.Response + 2, // 26: kubevirt.cmd.v1.InjectLaunchSecretRequest.vmi:type_name -> kubevirt.cmd.v1.VMI + 18, // 27: kubevirt.cmd.v1.VMIChecksumResponse.response:type_name -> kubevirt.cmd.v1.Response + 0, // 28: kubevirt.cmd.v1.MigrationProxyRequest.action:type_name -> kubevirt.cmd.v1.MigrationProxyAction + 10, // 29: kubevirt.cmd.v1.VirtualMachineOptions.DisksInfoEntry.value:type_name -> kubevirt.cmd.v1.DiskInfo + 12, // 30: kubevirt.cmd.v1.VirtualMachineOptions.InterfaceMigrationEntry.value:type_name -> kubevirt.cmd.v1.InterfaceBindingMigration + 14, // 31: kubevirt.cmd.v1.Cmd.SyncVirtualMachine:input_type -> kubevirt.cmd.v1.VMIRequest + 14, // 32: kubevirt.cmd.v1.Cmd.PauseVirtualMachine:input_type -> kubevirt.cmd.v1.VMIRequest + 14, // 33: kubevirt.cmd.v1.Cmd.UnpauseVirtualMachine:input_type -> kubevirt.cmd.v1.VMIRequest + 27, // 34: kubevirt.cmd.v1.Cmd.FreezeVirtualMachine:input_type -> kubevirt.cmd.v1.FreezeRequest + 14, // 35: kubevirt.cmd.v1.Cmd.UnfreezeVirtualMachine:input_type -> kubevirt.cmd.v1.VMIRequest + 14, // 36: kubevirt.cmd.v1.Cmd.SoftRebootVirtualMachine:input_type -> kubevirt.cmd.v1.VMIRequest + 14, // 37: kubevirt.cmd.v1.Cmd.ShutdownVirtualMachine:input_type -> kubevirt.cmd.v1.VMIRequest + 14, // 38: kubevirt.cmd.v1.Cmd.KillVirtualMachine:input_type -> kubevirt.cmd.v1.VMIRequest + 14, // 39: kubevirt.cmd.v1.Cmd.DeleteVirtualMachine:input_type -> kubevirt.cmd.v1.VMIRequest + 15, // 40: kubevirt.cmd.v1.Cmd.MigrateVirtualMachine:input_type -> kubevirt.cmd.v1.MigrationRequest + 14, // 41: kubevirt.cmd.v1.Cmd.SyncMigrationTarget:input_type -> kubevirt.cmd.v1.VMIRequest + 14, // 42: kubevirt.cmd.v1.Cmd.CancelVirtualMachineMigration:input_type -> kubevirt.cmd.v1.VMIRequest + 14, // 43: kubevirt.cmd.v1.Cmd.SignalTargetPodCleanup:input_type -> kubevirt.cmd.v1.VMIRequest + 14, // 44: kubevirt.cmd.v1.Cmd.FinalizeVirtualMachineMigration:input_type -> kubevirt.cmd.v1.VMIRequest + 14, // 45: kubevirt.cmd.v1.Cmd.HotplugHostDevices:input_type -> kubevirt.cmd.v1.VMIRequest + 17, // 46: kubevirt.cmd.v1.Cmd.GetDomain:input_type -> kubevirt.cmd.v1.EmptyRequest + 17, // 47: kubevirt.cmd.v1.Cmd.GetDomainStats:input_type -> kubevirt.cmd.v1.EmptyRequest + 17, // 48: kubevirt.cmd.v1.Cmd.GetGuestInfo:input_type -> kubevirt.cmd.v1.EmptyRequest + 17, // 49: kubevirt.cmd.v1.Cmd.GetUsers:input_type -> kubevirt.cmd.v1.EmptyRequest + 17, // 50: kubevirt.cmd.v1.Cmd.GetFilesystems:input_type -> kubevirt.cmd.v1.EmptyRequest + 17, // 51: kubevirt.cmd.v1.Cmd.Ping:input_type -> kubevirt.cmd.v1.EmptyRequest + 16, // 52: kubevirt.cmd.v1.Cmd.Exec:input_type -> kubevirt.cmd.v1.ExecRequest + 25, // 53: kubevirt.cmd.v1.Cmd.GuestPing:input_type -> kubevirt.cmd.v1.GuestPingRequest + 28, // 54: kubevirt.cmd.v1.Cmd.VirtualMachineMemoryDump:input_type -> kubevirt.cmd.v1.MemoryDumpRequest + 17, // 55: kubevirt.cmd.v1.Cmd.GetQemuVersion:input_type -> kubevirt.cmd.v1.EmptyRequest + 14, // 56: kubevirt.cmd.v1.Cmd.SyncVirtualMachineCPUs:input_type -> kubevirt.cmd.v1.VMIRequest + 14, // 57: kubevirt.cmd.v1.Cmd.SyncVirtualMachineMemory:input_type -> kubevirt.cmd.v1.VMIRequest + 17, // 58: kubevirt.cmd.v1.Cmd.GetSEVInfo:input_type -> kubevirt.cmd.v1.EmptyRequest + 14, // 59: kubevirt.cmd.v1.Cmd.GetLaunchMeasurement:input_type -> kubevirt.cmd.v1.VMIRequest + 31, // 60: kubevirt.cmd.v1.Cmd.InjectLaunchSecret:input_type -> kubevirt.cmd.v1.InjectLaunchSecretRequest + 17, // 61: kubevirt.cmd.v1.Cmd.GetAppliedVMIChecksum:input_type -> kubevirt.cmd.v1.EmptyRequest + 33, // 62: kubevirt.cmd.v1.Cmd.MigrationProxy:input_type -> kubevirt.cmd.v1.MigrationProxyRequest + 18, // 63: kubevirt.cmd.v1.Cmd.SyncVirtualMachine:output_type -> kubevirt.cmd.v1.Response + 18, // 64: kubevirt.cmd.v1.Cmd.PauseVirtualMachine:output_type -> kubevirt.cmd.v1.Response + 18, // 65: kubevirt.cmd.v1.Cmd.UnpauseVirtualMachine:output_type -> kubevirt.cmd.v1.Response + 18, // 66: kubevirt.cmd.v1.Cmd.FreezeVirtualMachine:output_type -> kubevirt.cmd.v1.Response + 18, // 67: kubevirt.cmd.v1.Cmd.UnfreezeVirtualMachine:output_type -> kubevirt.cmd.v1.Response + 18, // 68: kubevirt.cmd.v1.Cmd.SoftRebootVirtualMachine:output_type -> kubevirt.cmd.v1.Response + 18, // 69: kubevirt.cmd.v1.Cmd.ShutdownVirtualMachine:output_type -> kubevirt.cmd.v1.Response + 18, // 70: kubevirt.cmd.v1.Cmd.KillVirtualMachine:output_type -> kubevirt.cmd.v1.Response + 18, // 71: kubevirt.cmd.v1.Cmd.DeleteVirtualMachine:output_type -> kubevirt.cmd.v1.Response + 18, // 72: kubevirt.cmd.v1.Cmd.MigrateVirtualMachine:output_type -> kubevirt.cmd.v1.Response + 18, // 73: kubevirt.cmd.v1.Cmd.SyncMigrationTarget:output_type -> kubevirt.cmd.v1.Response + 18, // 74: kubevirt.cmd.v1.Cmd.CancelVirtualMachineMigration:output_type -> kubevirt.cmd.v1.Response + 18, // 75: kubevirt.cmd.v1.Cmd.SignalTargetPodCleanup:output_type -> kubevirt.cmd.v1.Response + 18, // 76: kubevirt.cmd.v1.Cmd.FinalizeVirtualMachineMigration:output_type -> kubevirt.cmd.v1.Response + 18, // 77: kubevirt.cmd.v1.Cmd.HotplugHostDevices:output_type -> kubevirt.cmd.v1.Response + 19, // 78: kubevirt.cmd.v1.Cmd.GetDomain:output_type -> kubevirt.cmd.v1.DomainResponse + 20, // 79: kubevirt.cmd.v1.Cmd.GetDomainStats:output_type -> kubevirt.cmd.v1.DomainStatsResponse + 21, // 80: kubevirt.cmd.v1.Cmd.GetGuestInfo:output_type -> kubevirt.cmd.v1.GuestInfoResponse + 22, // 81: kubevirt.cmd.v1.Cmd.GetUsers:output_type -> kubevirt.cmd.v1.GuestUserListResponse + 23, // 82: kubevirt.cmd.v1.Cmd.GetFilesystems:output_type -> kubevirt.cmd.v1.GuestFilesystemsResponse + 18, // 83: kubevirt.cmd.v1.Cmd.Ping:output_type -> kubevirt.cmd.v1.Response + 24, // 84: kubevirt.cmd.v1.Cmd.Exec:output_type -> kubevirt.cmd.v1.ExecResponse + 26, // 85: kubevirt.cmd.v1.Cmd.GuestPing:output_type -> kubevirt.cmd.v1.GuestPingResponse + 18, // 86: kubevirt.cmd.v1.Cmd.VirtualMachineMemoryDump:output_type -> kubevirt.cmd.v1.Response + 1, // 87: kubevirt.cmd.v1.Cmd.GetQemuVersion:output_type -> kubevirt.cmd.v1.QemuVersionResponse + 18, // 88: kubevirt.cmd.v1.Cmd.SyncVirtualMachineCPUs:output_type -> kubevirt.cmd.v1.Response + 18, // 89: kubevirt.cmd.v1.Cmd.SyncVirtualMachineMemory:output_type -> kubevirt.cmd.v1.Response + 29, // 90: kubevirt.cmd.v1.Cmd.GetSEVInfo:output_type -> kubevirt.cmd.v1.SEVInfoResponse + 30, // 91: kubevirt.cmd.v1.Cmd.GetLaunchMeasurement:output_type -> kubevirt.cmd.v1.LaunchMeasurementResponse + 18, // 92: kubevirt.cmd.v1.Cmd.InjectLaunchSecret:output_type -> kubevirt.cmd.v1.Response + 32, // 93: kubevirt.cmd.v1.Cmd.GetAppliedVMIChecksum:output_type -> kubevirt.cmd.v1.VMIChecksumResponse + 18, // 94: kubevirt.cmd.v1.Cmd.MigrationProxy:output_type -> kubevirt.cmd.v1.Response + 63, // [63:95] is the sub-list for method output_type + 31, // [31:63] is the sub-list for method input_type + 31, // [31:31] is the sub-list for extension type_name + 31, // [31:31] is the sub-list for extension extendee + 0, // [0:31] is the sub-list for field type_name +} + +func init() { file_proto_cmd_proto_init() } +func file_proto_cmd_proto_init() { + if File_proto_cmd_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_proto_cmd_proto_rawDesc), len(file_proto_cmd_proto_rawDesc)), + NumEnums: 1, + NumMessages: 36, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_proto_cmd_proto_goTypes, + DependencyIndexes: file_proto_cmd_proto_depIdxs, + EnumInfos: file_proto_cmd_proto_enumTypes, + MessageInfos: file_proto_cmd_proto_msgTypes, + }.Build() + File_proto_cmd_proto = out.File + file_proto_cmd_proto_goTypes = nil + file_proto_cmd_proto_depIdxs = nil +} diff --git a/images/virt-launcher/vlctl/pkg/api/generated/cmd/proto/cmd_grpc.pb.go b/images/virt-launcher/vlctl/pkg/api/generated/cmd/proto/cmd_grpc.pb.go new file mode 100644 index 0000000000..3ccbe67bc7 --- /dev/null +++ b/images/virt-launcher/vlctl/pkg/api/generated/cmd/proto/cmd_grpc.pb.go @@ -0,0 +1,1299 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.5.1 +// - protoc v3.19.6 +// source: proto/cmd.proto + +package cmd + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 + +const ( + Cmd_SyncVirtualMachine_FullMethodName = "/kubevirt.cmd.v1.Cmd/SyncVirtualMachine" + Cmd_PauseVirtualMachine_FullMethodName = "/kubevirt.cmd.v1.Cmd/PauseVirtualMachine" + Cmd_UnpauseVirtualMachine_FullMethodName = "/kubevirt.cmd.v1.Cmd/UnpauseVirtualMachine" + Cmd_FreezeVirtualMachine_FullMethodName = "/kubevirt.cmd.v1.Cmd/FreezeVirtualMachine" + Cmd_UnfreezeVirtualMachine_FullMethodName = "/kubevirt.cmd.v1.Cmd/UnfreezeVirtualMachine" + Cmd_SoftRebootVirtualMachine_FullMethodName = "/kubevirt.cmd.v1.Cmd/SoftRebootVirtualMachine" + Cmd_ShutdownVirtualMachine_FullMethodName = "/kubevirt.cmd.v1.Cmd/ShutdownVirtualMachine" + Cmd_KillVirtualMachine_FullMethodName = "/kubevirt.cmd.v1.Cmd/KillVirtualMachine" + Cmd_DeleteVirtualMachine_FullMethodName = "/kubevirt.cmd.v1.Cmd/DeleteVirtualMachine" + Cmd_MigrateVirtualMachine_FullMethodName = "/kubevirt.cmd.v1.Cmd/MigrateVirtualMachine" + Cmd_SyncMigrationTarget_FullMethodName = "/kubevirt.cmd.v1.Cmd/SyncMigrationTarget" + Cmd_CancelVirtualMachineMigration_FullMethodName = "/kubevirt.cmd.v1.Cmd/CancelVirtualMachineMigration" + Cmd_SignalTargetPodCleanup_FullMethodName = "/kubevirt.cmd.v1.Cmd/SignalTargetPodCleanup" + Cmd_FinalizeVirtualMachineMigration_FullMethodName = "/kubevirt.cmd.v1.Cmd/FinalizeVirtualMachineMigration" + Cmd_HotplugHostDevices_FullMethodName = "/kubevirt.cmd.v1.Cmd/HotplugHostDevices" + Cmd_GetDomain_FullMethodName = "/kubevirt.cmd.v1.Cmd/GetDomain" + Cmd_GetDomainStats_FullMethodName = "/kubevirt.cmd.v1.Cmd/GetDomainStats" + Cmd_GetGuestInfo_FullMethodName = "/kubevirt.cmd.v1.Cmd/GetGuestInfo" + Cmd_GetUsers_FullMethodName = "/kubevirt.cmd.v1.Cmd/GetUsers" + Cmd_GetFilesystems_FullMethodName = "/kubevirt.cmd.v1.Cmd/GetFilesystems" + Cmd_Ping_FullMethodName = "/kubevirt.cmd.v1.Cmd/Ping" + Cmd_Exec_FullMethodName = "/kubevirt.cmd.v1.Cmd/Exec" + Cmd_GuestPing_FullMethodName = "/kubevirt.cmd.v1.Cmd/GuestPing" + Cmd_VirtualMachineMemoryDump_FullMethodName = "/kubevirt.cmd.v1.Cmd/VirtualMachineMemoryDump" + Cmd_GetQemuVersion_FullMethodName = "/kubevirt.cmd.v1.Cmd/GetQemuVersion" + Cmd_SyncVirtualMachineCPUs_FullMethodName = "/kubevirt.cmd.v1.Cmd/SyncVirtualMachineCPUs" + Cmd_SyncVirtualMachineMemory_FullMethodName = "/kubevirt.cmd.v1.Cmd/SyncVirtualMachineMemory" + Cmd_GetSEVInfo_FullMethodName = "/kubevirt.cmd.v1.Cmd/GetSEVInfo" + Cmd_GetLaunchMeasurement_FullMethodName = "/kubevirt.cmd.v1.Cmd/GetLaunchMeasurement" + Cmd_InjectLaunchSecret_FullMethodName = "/kubevirt.cmd.v1.Cmd/InjectLaunchSecret" + Cmd_GetAppliedVMIChecksum_FullMethodName = "/kubevirt.cmd.v1.Cmd/GetAppliedVMIChecksum" + Cmd_MigrationProxy_FullMethodName = "/kubevirt.cmd.v1.Cmd/MigrationProxy" +) + +// CmdClient is the client API for Cmd service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type CmdClient interface { + SyncVirtualMachine(ctx context.Context, in *VMIRequest, opts ...grpc.CallOption) (*Response, error) + PauseVirtualMachine(ctx context.Context, in *VMIRequest, opts ...grpc.CallOption) (*Response, error) + UnpauseVirtualMachine(ctx context.Context, in *VMIRequest, opts ...grpc.CallOption) (*Response, error) + FreezeVirtualMachine(ctx context.Context, in *FreezeRequest, opts ...grpc.CallOption) (*Response, error) + UnfreezeVirtualMachine(ctx context.Context, in *VMIRequest, opts ...grpc.CallOption) (*Response, error) + SoftRebootVirtualMachine(ctx context.Context, in *VMIRequest, opts ...grpc.CallOption) (*Response, error) + ShutdownVirtualMachine(ctx context.Context, in *VMIRequest, opts ...grpc.CallOption) (*Response, error) + KillVirtualMachine(ctx context.Context, in *VMIRequest, opts ...grpc.CallOption) (*Response, error) + DeleteVirtualMachine(ctx context.Context, in *VMIRequest, opts ...grpc.CallOption) (*Response, error) + MigrateVirtualMachine(ctx context.Context, in *MigrationRequest, opts ...grpc.CallOption) (*Response, error) + SyncMigrationTarget(ctx context.Context, in *VMIRequest, opts ...grpc.CallOption) (*Response, error) + CancelVirtualMachineMigration(ctx context.Context, in *VMIRequest, opts ...grpc.CallOption) (*Response, error) + SignalTargetPodCleanup(ctx context.Context, in *VMIRequest, opts ...grpc.CallOption) (*Response, error) + FinalizeVirtualMachineMigration(ctx context.Context, in *VMIRequest, opts ...grpc.CallOption) (*Response, error) + HotplugHostDevices(ctx context.Context, in *VMIRequest, opts ...grpc.CallOption) (*Response, error) + GetDomain(ctx context.Context, in *EmptyRequest, opts ...grpc.CallOption) (*DomainResponse, error) + GetDomainStats(ctx context.Context, in *EmptyRequest, opts ...grpc.CallOption) (*DomainStatsResponse, error) + GetGuestInfo(ctx context.Context, in *EmptyRequest, opts ...grpc.CallOption) (*GuestInfoResponse, error) + GetUsers(ctx context.Context, in *EmptyRequest, opts ...grpc.CallOption) (*GuestUserListResponse, error) + GetFilesystems(ctx context.Context, in *EmptyRequest, opts ...grpc.CallOption) (*GuestFilesystemsResponse, error) + Ping(ctx context.Context, in *EmptyRequest, opts ...grpc.CallOption) (*Response, error) + Exec(ctx context.Context, in *ExecRequest, opts ...grpc.CallOption) (*ExecResponse, error) + GuestPing(ctx context.Context, in *GuestPingRequest, opts ...grpc.CallOption) (*GuestPingResponse, error) + VirtualMachineMemoryDump(ctx context.Context, in *MemoryDumpRequest, opts ...grpc.CallOption) (*Response, error) + GetQemuVersion(ctx context.Context, in *EmptyRequest, opts ...grpc.CallOption) (*QemuVersionResponse, error) + SyncVirtualMachineCPUs(ctx context.Context, in *VMIRequest, opts ...grpc.CallOption) (*Response, error) + SyncVirtualMachineMemory(ctx context.Context, in *VMIRequest, opts ...grpc.CallOption) (*Response, error) + GetSEVInfo(ctx context.Context, in *EmptyRequest, opts ...grpc.CallOption) (*SEVInfoResponse, error) + GetLaunchMeasurement(ctx context.Context, in *VMIRequest, opts ...grpc.CallOption) (*LaunchMeasurementResponse, error) + InjectLaunchSecret(ctx context.Context, in *InjectLaunchSecretRequest, opts ...grpc.CallOption) (*Response, error) + GetAppliedVMIChecksum(ctx context.Context, in *EmptyRequest, opts ...grpc.CallOption) (*VMIChecksumResponse, error) + MigrationProxy(ctx context.Context, in *MigrationProxyRequest, opts ...grpc.CallOption) (*Response, error) +} + +type cmdClient struct { + cc grpc.ClientConnInterface +} + +func NewCmdClient(cc grpc.ClientConnInterface) CmdClient { + return &cmdClient{cc} +} + +func (c *cmdClient) SyncVirtualMachine(ctx context.Context, in *VMIRequest, opts ...grpc.CallOption) (*Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Response) + err := c.cc.Invoke(ctx, Cmd_SyncVirtualMachine_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *cmdClient) PauseVirtualMachine(ctx context.Context, in *VMIRequest, opts ...grpc.CallOption) (*Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Response) + err := c.cc.Invoke(ctx, Cmd_PauseVirtualMachine_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *cmdClient) UnpauseVirtualMachine(ctx context.Context, in *VMIRequest, opts ...grpc.CallOption) (*Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Response) + err := c.cc.Invoke(ctx, Cmd_UnpauseVirtualMachine_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *cmdClient) FreezeVirtualMachine(ctx context.Context, in *FreezeRequest, opts ...grpc.CallOption) (*Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Response) + err := c.cc.Invoke(ctx, Cmd_FreezeVirtualMachine_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *cmdClient) UnfreezeVirtualMachine(ctx context.Context, in *VMIRequest, opts ...grpc.CallOption) (*Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Response) + err := c.cc.Invoke(ctx, Cmd_UnfreezeVirtualMachine_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *cmdClient) SoftRebootVirtualMachine(ctx context.Context, in *VMIRequest, opts ...grpc.CallOption) (*Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Response) + err := c.cc.Invoke(ctx, Cmd_SoftRebootVirtualMachine_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *cmdClient) ShutdownVirtualMachine(ctx context.Context, in *VMIRequest, opts ...grpc.CallOption) (*Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Response) + err := c.cc.Invoke(ctx, Cmd_ShutdownVirtualMachine_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *cmdClient) KillVirtualMachine(ctx context.Context, in *VMIRequest, opts ...grpc.CallOption) (*Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Response) + err := c.cc.Invoke(ctx, Cmd_KillVirtualMachine_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *cmdClient) DeleteVirtualMachine(ctx context.Context, in *VMIRequest, opts ...grpc.CallOption) (*Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Response) + err := c.cc.Invoke(ctx, Cmd_DeleteVirtualMachine_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *cmdClient) MigrateVirtualMachine(ctx context.Context, in *MigrationRequest, opts ...grpc.CallOption) (*Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Response) + err := c.cc.Invoke(ctx, Cmd_MigrateVirtualMachine_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *cmdClient) SyncMigrationTarget(ctx context.Context, in *VMIRequest, opts ...grpc.CallOption) (*Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Response) + err := c.cc.Invoke(ctx, Cmd_SyncMigrationTarget_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *cmdClient) CancelVirtualMachineMigration(ctx context.Context, in *VMIRequest, opts ...grpc.CallOption) (*Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Response) + err := c.cc.Invoke(ctx, Cmd_CancelVirtualMachineMigration_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *cmdClient) SignalTargetPodCleanup(ctx context.Context, in *VMIRequest, opts ...grpc.CallOption) (*Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Response) + err := c.cc.Invoke(ctx, Cmd_SignalTargetPodCleanup_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *cmdClient) FinalizeVirtualMachineMigration(ctx context.Context, in *VMIRequest, opts ...grpc.CallOption) (*Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Response) + err := c.cc.Invoke(ctx, Cmd_FinalizeVirtualMachineMigration_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *cmdClient) HotplugHostDevices(ctx context.Context, in *VMIRequest, opts ...grpc.CallOption) (*Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Response) + err := c.cc.Invoke(ctx, Cmd_HotplugHostDevices_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *cmdClient) GetDomain(ctx context.Context, in *EmptyRequest, opts ...grpc.CallOption) (*DomainResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(DomainResponse) + err := c.cc.Invoke(ctx, Cmd_GetDomain_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *cmdClient) GetDomainStats(ctx context.Context, in *EmptyRequest, opts ...grpc.CallOption) (*DomainStatsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(DomainStatsResponse) + err := c.cc.Invoke(ctx, Cmd_GetDomainStats_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *cmdClient) GetGuestInfo(ctx context.Context, in *EmptyRequest, opts ...grpc.CallOption) (*GuestInfoResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(GuestInfoResponse) + err := c.cc.Invoke(ctx, Cmd_GetGuestInfo_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *cmdClient) GetUsers(ctx context.Context, in *EmptyRequest, opts ...grpc.CallOption) (*GuestUserListResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(GuestUserListResponse) + err := c.cc.Invoke(ctx, Cmd_GetUsers_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *cmdClient) GetFilesystems(ctx context.Context, in *EmptyRequest, opts ...grpc.CallOption) (*GuestFilesystemsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(GuestFilesystemsResponse) + err := c.cc.Invoke(ctx, Cmd_GetFilesystems_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *cmdClient) Ping(ctx context.Context, in *EmptyRequest, opts ...grpc.CallOption) (*Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Response) + err := c.cc.Invoke(ctx, Cmd_Ping_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *cmdClient) Exec(ctx context.Context, in *ExecRequest, opts ...grpc.CallOption) (*ExecResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ExecResponse) + err := c.cc.Invoke(ctx, Cmd_Exec_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *cmdClient) GuestPing(ctx context.Context, in *GuestPingRequest, opts ...grpc.CallOption) (*GuestPingResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(GuestPingResponse) + err := c.cc.Invoke(ctx, Cmd_GuestPing_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *cmdClient) VirtualMachineMemoryDump(ctx context.Context, in *MemoryDumpRequest, opts ...grpc.CallOption) (*Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Response) + err := c.cc.Invoke(ctx, Cmd_VirtualMachineMemoryDump_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *cmdClient) GetQemuVersion(ctx context.Context, in *EmptyRequest, opts ...grpc.CallOption) (*QemuVersionResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(QemuVersionResponse) + err := c.cc.Invoke(ctx, Cmd_GetQemuVersion_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *cmdClient) SyncVirtualMachineCPUs(ctx context.Context, in *VMIRequest, opts ...grpc.CallOption) (*Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Response) + err := c.cc.Invoke(ctx, Cmd_SyncVirtualMachineCPUs_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *cmdClient) SyncVirtualMachineMemory(ctx context.Context, in *VMIRequest, opts ...grpc.CallOption) (*Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Response) + err := c.cc.Invoke(ctx, Cmd_SyncVirtualMachineMemory_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *cmdClient) GetSEVInfo(ctx context.Context, in *EmptyRequest, opts ...grpc.CallOption) (*SEVInfoResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(SEVInfoResponse) + err := c.cc.Invoke(ctx, Cmd_GetSEVInfo_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *cmdClient) GetLaunchMeasurement(ctx context.Context, in *VMIRequest, opts ...grpc.CallOption) (*LaunchMeasurementResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(LaunchMeasurementResponse) + err := c.cc.Invoke(ctx, Cmd_GetLaunchMeasurement_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *cmdClient) InjectLaunchSecret(ctx context.Context, in *InjectLaunchSecretRequest, opts ...grpc.CallOption) (*Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Response) + err := c.cc.Invoke(ctx, Cmd_InjectLaunchSecret_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *cmdClient) GetAppliedVMIChecksum(ctx context.Context, in *EmptyRequest, opts ...grpc.CallOption) (*VMIChecksumResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(VMIChecksumResponse) + err := c.cc.Invoke(ctx, Cmd_GetAppliedVMIChecksum_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *cmdClient) MigrationProxy(ctx context.Context, in *MigrationProxyRequest, opts ...grpc.CallOption) (*Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Response) + err := c.cc.Invoke(ctx, Cmd_MigrationProxy_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +// CmdServer is the server API for Cmd service. +// All implementations must embed UnimplementedCmdServer +// for forward compatibility. +type CmdServer interface { + SyncVirtualMachine(context.Context, *VMIRequest) (*Response, error) + PauseVirtualMachine(context.Context, *VMIRequest) (*Response, error) + UnpauseVirtualMachine(context.Context, *VMIRequest) (*Response, error) + FreezeVirtualMachine(context.Context, *FreezeRequest) (*Response, error) + UnfreezeVirtualMachine(context.Context, *VMIRequest) (*Response, error) + SoftRebootVirtualMachine(context.Context, *VMIRequest) (*Response, error) + ShutdownVirtualMachine(context.Context, *VMIRequest) (*Response, error) + KillVirtualMachine(context.Context, *VMIRequest) (*Response, error) + DeleteVirtualMachine(context.Context, *VMIRequest) (*Response, error) + MigrateVirtualMachine(context.Context, *MigrationRequest) (*Response, error) + SyncMigrationTarget(context.Context, *VMIRequest) (*Response, error) + CancelVirtualMachineMigration(context.Context, *VMIRequest) (*Response, error) + SignalTargetPodCleanup(context.Context, *VMIRequest) (*Response, error) + FinalizeVirtualMachineMigration(context.Context, *VMIRequest) (*Response, error) + HotplugHostDevices(context.Context, *VMIRequest) (*Response, error) + GetDomain(context.Context, *EmptyRequest) (*DomainResponse, error) + GetDomainStats(context.Context, *EmptyRequest) (*DomainStatsResponse, error) + GetGuestInfo(context.Context, *EmptyRequest) (*GuestInfoResponse, error) + GetUsers(context.Context, *EmptyRequest) (*GuestUserListResponse, error) + GetFilesystems(context.Context, *EmptyRequest) (*GuestFilesystemsResponse, error) + Ping(context.Context, *EmptyRequest) (*Response, error) + Exec(context.Context, *ExecRequest) (*ExecResponse, error) + GuestPing(context.Context, *GuestPingRequest) (*GuestPingResponse, error) + VirtualMachineMemoryDump(context.Context, *MemoryDumpRequest) (*Response, error) + GetQemuVersion(context.Context, *EmptyRequest) (*QemuVersionResponse, error) + SyncVirtualMachineCPUs(context.Context, *VMIRequest) (*Response, error) + SyncVirtualMachineMemory(context.Context, *VMIRequest) (*Response, error) + GetSEVInfo(context.Context, *EmptyRequest) (*SEVInfoResponse, error) + GetLaunchMeasurement(context.Context, *VMIRequest) (*LaunchMeasurementResponse, error) + InjectLaunchSecret(context.Context, *InjectLaunchSecretRequest) (*Response, error) + GetAppliedVMIChecksum(context.Context, *EmptyRequest) (*VMIChecksumResponse, error) + MigrationProxy(context.Context, *MigrationProxyRequest) (*Response, error) + mustEmbedUnimplementedCmdServer() +} + +// UnimplementedCmdServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedCmdServer struct{} + +func (UnimplementedCmdServer) SyncVirtualMachine(context.Context, *VMIRequest) (*Response, error) { + return nil, status.Errorf(codes.Unimplemented, "method SyncVirtualMachine not implemented") +} +func (UnimplementedCmdServer) PauseVirtualMachine(context.Context, *VMIRequest) (*Response, error) { + return nil, status.Errorf(codes.Unimplemented, "method PauseVirtualMachine not implemented") +} +func (UnimplementedCmdServer) UnpauseVirtualMachine(context.Context, *VMIRequest) (*Response, error) { + return nil, status.Errorf(codes.Unimplemented, "method UnpauseVirtualMachine not implemented") +} +func (UnimplementedCmdServer) FreezeVirtualMachine(context.Context, *FreezeRequest) (*Response, error) { + return nil, status.Errorf(codes.Unimplemented, "method FreezeVirtualMachine not implemented") +} +func (UnimplementedCmdServer) UnfreezeVirtualMachine(context.Context, *VMIRequest) (*Response, error) { + return nil, status.Errorf(codes.Unimplemented, "method UnfreezeVirtualMachine not implemented") +} +func (UnimplementedCmdServer) SoftRebootVirtualMachine(context.Context, *VMIRequest) (*Response, error) { + return nil, status.Errorf(codes.Unimplemented, "method SoftRebootVirtualMachine not implemented") +} +func (UnimplementedCmdServer) ShutdownVirtualMachine(context.Context, *VMIRequest) (*Response, error) { + return nil, status.Errorf(codes.Unimplemented, "method ShutdownVirtualMachine not implemented") +} +func (UnimplementedCmdServer) KillVirtualMachine(context.Context, *VMIRequest) (*Response, error) { + return nil, status.Errorf(codes.Unimplemented, "method KillVirtualMachine not implemented") +} +func (UnimplementedCmdServer) DeleteVirtualMachine(context.Context, *VMIRequest) (*Response, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteVirtualMachine not implemented") +} +func (UnimplementedCmdServer) MigrateVirtualMachine(context.Context, *MigrationRequest) (*Response, error) { + return nil, status.Errorf(codes.Unimplemented, "method MigrateVirtualMachine not implemented") +} +func (UnimplementedCmdServer) SyncMigrationTarget(context.Context, *VMIRequest) (*Response, error) { + return nil, status.Errorf(codes.Unimplemented, "method SyncMigrationTarget not implemented") +} +func (UnimplementedCmdServer) CancelVirtualMachineMigration(context.Context, *VMIRequest) (*Response, error) { + return nil, status.Errorf(codes.Unimplemented, "method CancelVirtualMachineMigration not implemented") +} +func (UnimplementedCmdServer) SignalTargetPodCleanup(context.Context, *VMIRequest) (*Response, error) { + return nil, status.Errorf(codes.Unimplemented, "method SignalTargetPodCleanup not implemented") +} +func (UnimplementedCmdServer) FinalizeVirtualMachineMigration(context.Context, *VMIRequest) (*Response, error) { + return nil, status.Errorf(codes.Unimplemented, "method FinalizeVirtualMachineMigration not implemented") +} +func (UnimplementedCmdServer) HotplugHostDevices(context.Context, *VMIRequest) (*Response, error) { + return nil, status.Errorf(codes.Unimplemented, "method HotplugHostDevices not implemented") +} +func (UnimplementedCmdServer) GetDomain(context.Context, *EmptyRequest) (*DomainResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetDomain not implemented") +} +func (UnimplementedCmdServer) GetDomainStats(context.Context, *EmptyRequest) (*DomainStatsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetDomainStats not implemented") +} +func (UnimplementedCmdServer) GetGuestInfo(context.Context, *EmptyRequest) (*GuestInfoResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetGuestInfo not implemented") +} +func (UnimplementedCmdServer) GetUsers(context.Context, *EmptyRequest) (*GuestUserListResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetUsers not implemented") +} +func (UnimplementedCmdServer) GetFilesystems(context.Context, *EmptyRequest) (*GuestFilesystemsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetFilesystems not implemented") +} +func (UnimplementedCmdServer) Ping(context.Context, *EmptyRequest) (*Response, error) { + return nil, status.Errorf(codes.Unimplemented, "method Ping not implemented") +} +func (UnimplementedCmdServer) Exec(context.Context, *ExecRequest) (*ExecResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Exec not implemented") +} +func (UnimplementedCmdServer) GuestPing(context.Context, *GuestPingRequest) (*GuestPingResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GuestPing not implemented") +} +func (UnimplementedCmdServer) VirtualMachineMemoryDump(context.Context, *MemoryDumpRequest) (*Response, error) { + return nil, status.Errorf(codes.Unimplemented, "method VirtualMachineMemoryDump not implemented") +} +func (UnimplementedCmdServer) GetQemuVersion(context.Context, *EmptyRequest) (*QemuVersionResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetQemuVersion not implemented") +} +func (UnimplementedCmdServer) SyncVirtualMachineCPUs(context.Context, *VMIRequest) (*Response, error) { + return nil, status.Errorf(codes.Unimplemented, "method SyncVirtualMachineCPUs not implemented") +} +func (UnimplementedCmdServer) SyncVirtualMachineMemory(context.Context, *VMIRequest) (*Response, error) { + return nil, status.Errorf(codes.Unimplemented, "method SyncVirtualMachineMemory not implemented") +} +func (UnimplementedCmdServer) GetSEVInfo(context.Context, *EmptyRequest) (*SEVInfoResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetSEVInfo not implemented") +} +func (UnimplementedCmdServer) GetLaunchMeasurement(context.Context, *VMIRequest) (*LaunchMeasurementResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetLaunchMeasurement not implemented") +} +func (UnimplementedCmdServer) InjectLaunchSecret(context.Context, *InjectLaunchSecretRequest) (*Response, error) { + return nil, status.Errorf(codes.Unimplemented, "method InjectLaunchSecret not implemented") +} +func (UnimplementedCmdServer) GetAppliedVMIChecksum(context.Context, *EmptyRequest) (*VMIChecksumResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetAppliedVMIChecksum not implemented") +} +func (UnimplementedCmdServer) MigrationProxy(context.Context, *MigrationProxyRequest) (*Response, error) { + return nil, status.Errorf(codes.Unimplemented, "method MigrationProxy not implemented") +} +func (UnimplementedCmdServer) mustEmbedUnimplementedCmdServer() {} +func (UnimplementedCmdServer) testEmbeddedByValue() {} + +// UnsafeCmdServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to CmdServer will +// result in compilation errors. +type UnsafeCmdServer interface { + mustEmbedUnimplementedCmdServer() +} + +func RegisterCmdServer(s grpc.ServiceRegistrar, srv CmdServer) { + // If the following call pancis, it indicates UnimplementedCmdServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } + s.RegisterService(&Cmd_ServiceDesc, srv) +} + +func _Cmd_SyncVirtualMachine_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(VMIRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CmdServer).SyncVirtualMachine(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Cmd_SyncVirtualMachine_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CmdServer).SyncVirtualMachine(ctx, req.(*VMIRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Cmd_PauseVirtualMachine_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(VMIRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CmdServer).PauseVirtualMachine(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Cmd_PauseVirtualMachine_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CmdServer).PauseVirtualMachine(ctx, req.(*VMIRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Cmd_UnpauseVirtualMachine_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(VMIRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CmdServer).UnpauseVirtualMachine(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Cmd_UnpauseVirtualMachine_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CmdServer).UnpauseVirtualMachine(ctx, req.(*VMIRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Cmd_FreezeVirtualMachine_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(FreezeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CmdServer).FreezeVirtualMachine(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Cmd_FreezeVirtualMachine_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CmdServer).FreezeVirtualMachine(ctx, req.(*FreezeRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Cmd_UnfreezeVirtualMachine_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(VMIRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CmdServer).UnfreezeVirtualMachine(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Cmd_UnfreezeVirtualMachine_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CmdServer).UnfreezeVirtualMachine(ctx, req.(*VMIRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Cmd_SoftRebootVirtualMachine_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(VMIRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CmdServer).SoftRebootVirtualMachine(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Cmd_SoftRebootVirtualMachine_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CmdServer).SoftRebootVirtualMachine(ctx, req.(*VMIRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Cmd_ShutdownVirtualMachine_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(VMIRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CmdServer).ShutdownVirtualMachine(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Cmd_ShutdownVirtualMachine_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CmdServer).ShutdownVirtualMachine(ctx, req.(*VMIRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Cmd_KillVirtualMachine_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(VMIRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CmdServer).KillVirtualMachine(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Cmd_KillVirtualMachine_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CmdServer).KillVirtualMachine(ctx, req.(*VMIRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Cmd_DeleteVirtualMachine_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(VMIRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CmdServer).DeleteVirtualMachine(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Cmd_DeleteVirtualMachine_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CmdServer).DeleteVirtualMachine(ctx, req.(*VMIRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Cmd_MigrateVirtualMachine_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MigrationRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CmdServer).MigrateVirtualMachine(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Cmd_MigrateVirtualMachine_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CmdServer).MigrateVirtualMachine(ctx, req.(*MigrationRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Cmd_SyncMigrationTarget_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(VMIRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CmdServer).SyncMigrationTarget(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Cmd_SyncMigrationTarget_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CmdServer).SyncMigrationTarget(ctx, req.(*VMIRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Cmd_CancelVirtualMachineMigration_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(VMIRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CmdServer).CancelVirtualMachineMigration(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Cmd_CancelVirtualMachineMigration_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CmdServer).CancelVirtualMachineMigration(ctx, req.(*VMIRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Cmd_SignalTargetPodCleanup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(VMIRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CmdServer).SignalTargetPodCleanup(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Cmd_SignalTargetPodCleanup_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CmdServer).SignalTargetPodCleanup(ctx, req.(*VMIRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Cmd_FinalizeVirtualMachineMigration_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(VMIRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CmdServer).FinalizeVirtualMachineMigration(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Cmd_FinalizeVirtualMachineMigration_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CmdServer).FinalizeVirtualMachineMigration(ctx, req.(*VMIRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Cmd_HotplugHostDevices_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(VMIRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CmdServer).HotplugHostDevices(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Cmd_HotplugHostDevices_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CmdServer).HotplugHostDevices(ctx, req.(*VMIRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Cmd_GetDomain_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(EmptyRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CmdServer).GetDomain(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Cmd_GetDomain_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CmdServer).GetDomain(ctx, req.(*EmptyRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Cmd_GetDomainStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(EmptyRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CmdServer).GetDomainStats(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Cmd_GetDomainStats_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CmdServer).GetDomainStats(ctx, req.(*EmptyRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Cmd_GetGuestInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(EmptyRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CmdServer).GetGuestInfo(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Cmd_GetGuestInfo_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CmdServer).GetGuestInfo(ctx, req.(*EmptyRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Cmd_GetUsers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(EmptyRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CmdServer).GetUsers(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Cmd_GetUsers_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CmdServer).GetUsers(ctx, req.(*EmptyRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Cmd_GetFilesystems_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(EmptyRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CmdServer).GetFilesystems(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Cmd_GetFilesystems_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CmdServer).GetFilesystems(ctx, req.(*EmptyRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Cmd_Ping_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(EmptyRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CmdServer).Ping(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Cmd_Ping_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CmdServer).Ping(ctx, req.(*EmptyRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Cmd_Exec_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ExecRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CmdServer).Exec(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Cmd_Exec_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CmdServer).Exec(ctx, req.(*ExecRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Cmd_GuestPing_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GuestPingRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CmdServer).GuestPing(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Cmd_GuestPing_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CmdServer).GuestPing(ctx, req.(*GuestPingRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Cmd_VirtualMachineMemoryDump_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MemoryDumpRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CmdServer).VirtualMachineMemoryDump(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Cmd_VirtualMachineMemoryDump_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CmdServer).VirtualMachineMemoryDump(ctx, req.(*MemoryDumpRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Cmd_GetQemuVersion_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(EmptyRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CmdServer).GetQemuVersion(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Cmd_GetQemuVersion_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CmdServer).GetQemuVersion(ctx, req.(*EmptyRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Cmd_SyncVirtualMachineCPUs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(VMIRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CmdServer).SyncVirtualMachineCPUs(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Cmd_SyncVirtualMachineCPUs_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CmdServer).SyncVirtualMachineCPUs(ctx, req.(*VMIRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Cmd_SyncVirtualMachineMemory_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(VMIRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CmdServer).SyncVirtualMachineMemory(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Cmd_SyncVirtualMachineMemory_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CmdServer).SyncVirtualMachineMemory(ctx, req.(*VMIRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Cmd_GetSEVInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(EmptyRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CmdServer).GetSEVInfo(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Cmd_GetSEVInfo_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CmdServer).GetSEVInfo(ctx, req.(*EmptyRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Cmd_GetLaunchMeasurement_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(VMIRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CmdServer).GetLaunchMeasurement(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Cmd_GetLaunchMeasurement_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CmdServer).GetLaunchMeasurement(ctx, req.(*VMIRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Cmd_InjectLaunchSecret_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(InjectLaunchSecretRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CmdServer).InjectLaunchSecret(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Cmd_InjectLaunchSecret_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CmdServer).InjectLaunchSecret(ctx, req.(*InjectLaunchSecretRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Cmd_GetAppliedVMIChecksum_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(EmptyRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CmdServer).GetAppliedVMIChecksum(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Cmd_GetAppliedVMIChecksum_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CmdServer).GetAppliedVMIChecksum(ctx, req.(*EmptyRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Cmd_MigrationProxy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MigrationProxyRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CmdServer).MigrationProxy(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Cmd_MigrationProxy_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CmdServer).MigrationProxy(ctx, req.(*MigrationProxyRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// Cmd_ServiceDesc is the grpc.ServiceDesc for Cmd service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Cmd_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "kubevirt.cmd.v1.Cmd", + HandlerType: (*CmdServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "SyncVirtualMachine", + Handler: _Cmd_SyncVirtualMachine_Handler, + }, + { + MethodName: "PauseVirtualMachine", + Handler: _Cmd_PauseVirtualMachine_Handler, + }, + { + MethodName: "UnpauseVirtualMachine", + Handler: _Cmd_UnpauseVirtualMachine_Handler, + }, + { + MethodName: "FreezeVirtualMachine", + Handler: _Cmd_FreezeVirtualMachine_Handler, + }, + { + MethodName: "UnfreezeVirtualMachine", + Handler: _Cmd_UnfreezeVirtualMachine_Handler, + }, + { + MethodName: "SoftRebootVirtualMachine", + Handler: _Cmd_SoftRebootVirtualMachine_Handler, + }, + { + MethodName: "ShutdownVirtualMachine", + Handler: _Cmd_ShutdownVirtualMachine_Handler, + }, + { + MethodName: "KillVirtualMachine", + Handler: _Cmd_KillVirtualMachine_Handler, + }, + { + MethodName: "DeleteVirtualMachine", + Handler: _Cmd_DeleteVirtualMachine_Handler, + }, + { + MethodName: "MigrateVirtualMachine", + Handler: _Cmd_MigrateVirtualMachine_Handler, + }, + { + MethodName: "SyncMigrationTarget", + Handler: _Cmd_SyncMigrationTarget_Handler, + }, + { + MethodName: "CancelVirtualMachineMigration", + Handler: _Cmd_CancelVirtualMachineMigration_Handler, + }, + { + MethodName: "SignalTargetPodCleanup", + Handler: _Cmd_SignalTargetPodCleanup_Handler, + }, + { + MethodName: "FinalizeVirtualMachineMigration", + Handler: _Cmd_FinalizeVirtualMachineMigration_Handler, + }, + { + MethodName: "HotplugHostDevices", + Handler: _Cmd_HotplugHostDevices_Handler, + }, + { + MethodName: "GetDomain", + Handler: _Cmd_GetDomain_Handler, + }, + { + MethodName: "GetDomainStats", + Handler: _Cmd_GetDomainStats_Handler, + }, + { + MethodName: "GetGuestInfo", + Handler: _Cmd_GetGuestInfo_Handler, + }, + { + MethodName: "GetUsers", + Handler: _Cmd_GetUsers_Handler, + }, + { + MethodName: "GetFilesystems", + Handler: _Cmd_GetFilesystems_Handler, + }, + { + MethodName: "Ping", + Handler: _Cmd_Ping_Handler, + }, + { + MethodName: "Exec", + Handler: _Cmd_Exec_Handler, + }, + { + MethodName: "GuestPing", + Handler: _Cmd_GuestPing_Handler, + }, + { + MethodName: "VirtualMachineMemoryDump", + Handler: _Cmd_VirtualMachineMemoryDump_Handler, + }, + { + MethodName: "GetQemuVersion", + Handler: _Cmd_GetQemuVersion_Handler, + }, + { + MethodName: "SyncVirtualMachineCPUs", + Handler: _Cmd_SyncVirtualMachineCPUs_Handler, + }, + { + MethodName: "SyncVirtualMachineMemory", + Handler: _Cmd_SyncVirtualMachineMemory_Handler, + }, + { + MethodName: "GetSEVInfo", + Handler: _Cmd_GetSEVInfo_Handler, + }, + { + MethodName: "GetLaunchMeasurement", + Handler: _Cmd_GetLaunchMeasurement_Handler, + }, + { + MethodName: "InjectLaunchSecret", + Handler: _Cmd_InjectLaunchSecret_Handler, + }, + { + MethodName: "GetAppliedVMIChecksum", + Handler: _Cmd_GetAppliedVMIChecksum_Handler, + }, + { + MethodName: "MigrationProxy", + Handler: _Cmd_MigrationProxy_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "proto/cmd.proto", +} diff --git a/images/virt-launcher/vlctl/pkg/api/generated/info/proto/info.pb.go b/images/virt-launcher/vlctl/pkg/api/generated/info/proto/info.pb.go new file mode 100644 index 0000000000..5db0a0a6d9 --- /dev/null +++ b/images/virt-launcher/vlctl/pkg/api/generated/info/proto/info.pb.go @@ -0,0 +1,164 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.10 +// protoc v3.19.6 +// source: proto/info.proto + +package info + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type CmdInfoRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CmdInfoRequest) Reset() { + *x = CmdInfoRequest{} + mi := &file_proto_info_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CmdInfoRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CmdInfoRequest) ProtoMessage() {} + +func (x *CmdInfoRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_info_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CmdInfoRequest.ProtoReflect.Descriptor instead. +func (*CmdInfoRequest) Descriptor() ([]byte, []int) { + return file_proto_info_proto_rawDescGZIP(), []int{0} +} + +type CmdInfoResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + SupportedCmdVersions []uint32 `protobuf:"varint,1,rep,packed,name=supportedCmdVersions,proto3" json:"supportedCmdVersions,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CmdInfoResponse) Reset() { + *x = CmdInfoResponse{} + mi := &file_proto_info_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CmdInfoResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CmdInfoResponse) ProtoMessage() {} + +func (x *CmdInfoResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_info_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CmdInfoResponse.ProtoReflect.Descriptor instead. +func (*CmdInfoResponse) Descriptor() ([]byte, []int) { + return file_proto_info_proto_rawDescGZIP(), []int{1} +} + +func (x *CmdInfoResponse) GetSupportedCmdVersions() []uint32 { + if x != nil { + return x.SupportedCmdVersions + } + return nil +} + +var File_proto_info_proto protoreflect.FileDescriptor + +const file_proto_info_proto_rawDesc = "" + + "\n" + + "\x10proto/info.proto\x12\x11kubevirt.cmd.info\"\x10\n" + + "\x0eCmdInfoRequest\"E\n" + + "\x0fCmdInfoResponse\x122\n" + + "\x14supportedCmdVersions\x18\x01 \x03(\rR\x14supportedCmdVersions2Z\n" + + "\aCmdInfo\x12O\n" + + "\x04Info\x12!.kubevirt.cmd.info.CmdInfoRequest\x1a\".kubevirt.cmd.info.CmdInfoResponse\"\x00B+Z)virt-launcher-plug/pkg/api/generated/infob\x06proto3" + +var ( + file_proto_info_proto_rawDescOnce sync.Once + file_proto_info_proto_rawDescData []byte +) + +func file_proto_info_proto_rawDescGZIP() []byte { + file_proto_info_proto_rawDescOnce.Do(func() { + file_proto_info_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_proto_info_proto_rawDesc), len(file_proto_info_proto_rawDesc))) + }) + return file_proto_info_proto_rawDescData +} + +var file_proto_info_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_proto_info_proto_goTypes = []any{ + (*CmdInfoRequest)(nil), // 0: kubevirt.cmd.info.CmdInfoRequest + (*CmdInfoResponse)(nil), // 1: kubevirt.cmd.info.CmdInfoResponse +} +var file_proto_info_proto_depIdxs = []int32{ + 0, // 0: kubevirt.cmd.info.CmdInfo.Info:input_type -> kubevirt.cmd.info.CmdInfoRequest + 1, // 1: kubevirt.cmd.info.CmdInfo.Info:output_type -> kubevirt.cmd.info.CmdInfoResponse + 1, // [1:2] is the sub-list for method output_type + 0, // [0:1] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_proto_info_proto_init() } +func file_proto_info_proto_init() { + if File_proto_info_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_proto_info_proto_rawDesc), len(file_proto_info_proto_rawDesc)), + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_proto_info_proto_goTypes, + DependencyIndexes: file_proto_info_proto_depIdxs, + MessageInfos: file_proto_info_proto_msgTypes, + }.Build() + File_proto_info_proto = out.File + file_proto_info_proto_goTypes = nil + file_proto_info_proto_depIdxs = nil +} diff --git a/images/virt-launcher/vlctl/pkg/api/generated/info/proto/info_grpc.pb.go b/images/virt-launcher/vlctl/pkg/api/generated/info/proto/info_grpc.pb.go new file mode 100644 index 0000000000..67ef1021b0 --- /dev/null +++ b/images/virt-launcher/vlctl/pkg/api/generated/info/proto/info_grpc.pb.go @@ -0,0 +1,121 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.5.1 +// - protoc v3.19.6 +// source: proto/info.proto + +package info + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 + +const ( + CmdInfo_Info_FullMethodName = "/kubevirt.cmd.info.CmdInfo/Info" +) + +// CmdInfoClient is the client API for CmdInfo service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type CmdInfoClient interface { + Info(ctx context.Context, in *CmdInfoRequest, opts ...grpc.CallOption) (*CmdInfoResponse, error) +} + +type cmdInfoClient struct { + cc grpc.ClientConnInterface +} + +func NewCmdInfoClient(cc grpc.ClientConnInterface) CmdInfoClient { + return &cmdInfoClient{cc} +} + +func (c *cmdInfoClient) Info(ctx context.Context, in *CmdInfoRequest, opts ...grpc.CallOption) (*CmdInfoResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(CmdInfoResponse) + err := c.cc.Invoke(ctx, CmdInfo_Info_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +// CmdInfoServer is the server API for CmdInfo service. +// All implementations must embed UnimplementedCmdInfoServer +// for forward compatibility. +type CmdInfoServer interface { + Info(context.Context, *CmdInfoRequest) (*CmdInfoResponse, error) + mustEmbedUnimplementedCmdInfoServer() +} + +// UnimplementedCmdInfoServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedCmdInfoServer struct{} + +func (UnimplementedCmdInfoServer) Info(context.Context, *CmdInfoRequest) (*CmdInfoResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Info not implemented") +} +func (UnimplementedCmdInfoServer) mustEmbedUnimplementedCmdInfoServer() {} +func (UnimplementedCmdInfoServer) testEmbeddedByValue() {} + +// UnsafeCmdInfoServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to CmdInfoServer will +// result in compilation errors. +type UnsafeCmdInfoServer interface { + mustEmbedUnimplementedCmdInfoServer() +} + +func RegisterCmdInfoServer(s grpc.ServiceRegistrar, srv CmdInfoServer) { + // If the following call pancis, it indicates UnimplementedCmdInfoServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } + s.RegisterService(&CmdInfo_ServiceDesc, srv) +} + +func _CmdInfo_Info_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CmdInfoRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CmdInfoServer).Info(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: CmdInfo_Info_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CmdInfoServer).Info(ctx, req.(*CmdInfoRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// CmdInfo_ServiceDesc is the grpc.ServiceDesc for CmdInfo service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var CmdInfo_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "kubevirt.cmd.info.CmdInfo", + HandlerType: (*CmdInfoServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Info", + Handler: _CmdInfo_Info_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "proto/info.proto", +} diff --git a/images/virt-launcher/vlctl/pkg/api/stats.go b/images/virt-launcher/vlctl/pkg/api/stats.go new file mode 100644 index 0000000000..ee0433bea3 --- /dev/null +++ b/images/virt-launcher/vlctl/pkg/api/stats.go @@ -0,0 +1,174 @@ +/* +Copyright The KubeVirt Authors. +Copyright 2025 Flant JSC + +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. + +Initially copied from https://github.com/kubevirt/kubevirt/blob/v1.6.2/pkg/virt-launcher/virtwrap/stats/types.go +*/ + +package api + +type DomainStats struct { + // the following aren't really needed for stats, but it's practical to report + // OTOH, the whole "Domain" is too much data to be unconditionally reported + Name string + UUID string + // omitted from libvirt-go: Domain + // omitted from libvirt-go: State + Cpu *DomainStatsCPU + // new, see below + Memory *DomainStatsMemory + // omitted from libvirt-go: DomainJobInfo + MigrateDomainJobInfo *DomainJobInfo + // omitted from libvirt-go: Balloon + Vcpu []DomainStatsVcpu + Net []DomainStatsNet + Block []DomainStatsBlock + // omitted from libvirt-go: Perf + // extra stats + CPUMapSet bool + CPUMap [][]bool + NrVirtCpu uint + DirtyRate *DomainStatsDirtyRate +} + +type DomainStatsCPU struct { + TimeSet bool + Time uint64 + UserSet bool + User uint64 + SystemSet bool + System uint64 +} + +type DomainStatsVcpu struct { + StateSet bool + State int // VcpuState + TimeSet bool + Time uint64 + WaitSet bool + Wait uint64 + DelaySet bool + Delay uint64 +} + +type DomainStatsNet struct { + NameSet bool + Name string + AliasSet bool + Alias string + RxBytesSet bool + RxBytes uint64 + RxPktsSet bool + RxPkts uint64 + RxErrsSet bool + RxErrs uint64 + RxDropSet bool + RxDrop uint64 + TxBytesSet bool + TxBytes uint64 + TxPktsSet bool + TxPkts uint64 + TxErrsSet bool + TxErrs uint64 + TxDropSet bool + TxDrop uint64 +} + +type DomainStatsBlock struct { + NameSet bool + Name string + Alias string + BackingIndexSet bool + BackingIndex uint + PathSet bool + Path string + RdReqsSet bool + RdReqs uint64 + RdBytesSet bool + RdBytes uint64 + RdTimesSet bool + RdTimes uint64 + WrReqsSet bool + WrReqs uint64 + WrBytesSet bool + WrBytes uint64 + WrTimesSet bool + WrTimes uint64 + FlReqsSet bool + FlReqs uint64 + FlTimesSet bool + FlTimes uint64 + ErrorsSet bool + Errors uint64 + AllocationSet bool + Allocation uint64 + CapacitySet bool + Capacity uint64 + PhysicalSet bool + Physical uint64 +} + +// mimic existing structs, but data is taken from +// DomainMemoryStat +type DomainStatsMemory struct { + UnusedSet bool + Unused uint64 + CachedSet bool + Cached uint64 + AvailableSet bool + Available uint64 + ActualBalloonSet bool + ActualBalloon uint64 + RSSSet bool + RSS uint64 + SwapInSet bool + SwapIn uint64 + SwapOutSet bool + SwapOut uint64 + MajorFaultSet bool + MajorFault uint64 + MinorFaultSet bool + MinorFault uint64 + UsableSet bool + Usable uint64 + TotalSet bool + Total uint64 +} + +// mimic existing structs, but data is taken from +// DomainJobInfo +type DomainJobInfo struct { + DataTotalSet bool + DataTotal uint64 + DataProcessedSet bool + DataProcessed uint64 + MemoryBpsSet bool + MemoryBps uint64 + DataRemainingSet bool + DataRemaining uint64 + MemDirtyRateSet bool + MemDirtyRate uint64 +} + +type DomainStatsDirtyRate struct { + CalcStatusSet bool + CalcStatus int + CalcStartTimeSet bool + CalcStartTime int64 + CalcPeriodSet bool + CalcPeriod int + MegabytesPerSecondSet bool + MegabytesPerSecond int64 +} diff --git a/images/virt-launcher/vlctl/pkg/client/client.go b/images/virt-launcher/vlctl/pkg/client/client.go new file mode 100644 index 0000000000..2260ac61f3 --- /dev/null +++ b/images/virt-launcher/vlctl/pkg/client/client.go @@ -0,0 +1,386 @@ +/* +Copyright The KubeVirt Authors. +Copyright 2025 Flant JSC + +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. + +Initially copied from https://github.com/kubevirt/kubevirt/blob/v1.6.2/pkg/virt-handler/cmd-client/client.go +*/ + +package client + +import ( + "context" + "encoding/json" + "errors" + "fmt" + "io" + "net" + "net/rpc" + "os" + "sort" + "syscall" + "time" + + "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + v1 "kubevirt.io/api/core/v1" + + "vlctl/pkg/api" + cmdproto "vlctl/pkg/api/generated/cmd/proto" + infoproto "vlctl/pkg/api/generated/info/proto" +) + +var ( + supportedCmdVersions = []uint32{1} +) + +const ( + shortTimeout time.Duration = 5 * time.Second +) + +type LauncherClient interface { + GetDomain() (*api.Domain, bool, error) + GetDomainStats() (*api.DomainStats, bool, error) + GetGuestInfo() (*v1.VirtualMachineInstanceGuestAgentInfo, error) + GetUsers() (v1.VirtualMachineInstanceGuestOSUserList, error) + GetFilesystems() (v1.VirtualMachineInstanceFileSystemList, error) + Ping() error + GuestPing(string, int32) error + GetQemuVersion() (string, error) + GetSEVInfo() (*v1.SEVPlatformInfo, error) + Close() +} + +func NewClient(socketPath string) (LauncherClient, error) { + conn, err := DialSocket(socketPath) + if err != nil { + return nil, err + } + + infoClient := infoproto.NewCmdInfoClient(conn) + return NewClientWithInfoClient(infoClient, conn) +} + +func NewClientWithInfoClient(infoClient infoproto.CmdInfoClient, conn *grpc.ClientConn) (LauncherClient, error) { + ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) + defer cancel() + info, err := infoClient.Info(ctx, &infoproto.CmdInfoRequest{}) + if err != nil { + return nil, fmt.Errorf("could not check cmd server version: %v", err) + } + version, err := GetHighestCompatibleVersion(info.SupportedCmdVersions, supportedCmdVersions) + if err != nil { + return nil, err + } + + // create cmd client + switch version { + case 1: + client := cmdproto.NewCmdClient(conn) + return newV1Client(client, conn), nil + default: + return nil, fmt.Errorf("cmd client version %v not implemented yet", version) + } +} + +func GetHighestCompatibleVersion(serverVersions []uint32, clientVersions []uint32) (uint32, error) { + sort.Slice(serverVersions, func(i, j int) bool { return serverVersions[i] > serverVersions[j] }) + for _, s := range serverVersions { + for _, c := range clientVersions { + if s == c { + return s, nil + } + + } + } + return 0, fmt.Errorf("no compatible version found, server: %v, client: %v", serverVersions, clientVersions) +} + +func newV1Client(client cmdproto.CmdClient, conn *grpc.ClientConn) LauncherClient { + return &VirtLauncherClient{ + v1client: client, + conn: conn, + } +} + +type VirtLauncherClient struct { + v1client cmdproto.CmdClient + conn *grpc.ClientConn +} + +func (v VirtLauncherClient) GetDomain() (*api.Domain, bool, error) { + domain := &api.Domain{} + exists := false + + request := &cmdproto.EmptyRequest{} + ctx, cancel := context.WithTimeout(context.Background(), shortTimeout) + defer cancel() + + domainResponse, err := v.v1client.GetDomain(ctx, request) + var response *cmdproto.Response + if domainResponse != nil { + response = domainResponse.Response + } + + if err = handleError(err, "GetDomain", response); err != nil || domainResponse == nil { + return nil, false, err + } + + if domainResponse.Domain != "" { + if err := json.Unmarshal([]byte(domainResponse.Domain), &domain); err != nil { + return nil, false, err + } + exists = true + } + return domain, exists, nil +} + +func (v VirtLauncherClient) GetDomainStats() (*api.DomainStats, bool, error) { + stats := &api.DomainStats{} + exists := false + + request := &cmdproto.EmptyRequest{} + ctx, cancel := context.WithTimeout(context.Background(), shortTimeout) + defer cancel() + + domainStatsResponse, err := v.v1client.GetDomainStats(ctx, request) + var response *cmdproto.Response + if domainStatsResponse != nil { + response = domainStatsResponse.Response + } + + if err = handleError(err, "GetDomainStats", response); err != nil || domainStatsResponse == nil { + return nil, false, err + } + + if domainStatsResponse.DomainStats != "" { + if err := json.Unmarshal([]byte(domainStatsResponse.DomainStats), stats); err != nil { + return nil, false, err + } + exists = true + } + return stats, exists, nil +} + +func (v VirtLauncherClient) GetGuestInfo() (*v1.VirtualMachineInstanceGuestAgentInfo, error) { + guestInfo := &v1.VirtualMachineInstanceGuestAgentInfo{} + + request := &cmdproto.EmptyRequest{} + ctx, cancel := context.WithTimeout(context.Background(), shortTimeout) + defer cancel() + + gaRespose, err := v.v1client.GetGuestInfo(ctx, request) + var response *cmdproto.Response + if gaRespose != nil { + response = gaRespose.Response + } + + if err = handleError(err, "GetGuestInfo", response); err != nil || gaRespose == nil { + return guestInfo, err + } + + if gaRespose.GuestInfoResponse != "" { + if err := json.Unmarshal([]byte(gaRespose.GetGuestInfoResponse()), guestInfo); err != nil { + return guestInfo, err + } + } + return guestInfo, nil +} + +func (v VirtLauncherClient) GetUsers() (v1.VirtualMachineInstanceGuestOSUserList, error) { + var userList []v1.VirtualMachineInstanceGuestOSUser + + request := &cmdproto.EmptyRequest{} + ctx, cancel := context.WithTimeout(context.Background(), shortTimeout) + defer cancel() + + uResponse, err := v.v1client.GetUsers(ctx, request) + var response *cmdproto.Response + if uResponse != nil { + response = uResponse.Response + } + + if err = handleError(err, "GetUsers", response); err != nil || uResponse == nil { + return v1.VirtualMachineInstanceGuestOSUserList{}, err + } + + if uResponse.GetGuestUserListResponse() != "" { + if err := json.Unmarshal([]byte(uResponse.GetGuestUserListResponse()), &userList); err != nil { + return v1.VirtualMachineInstanceGuestOSUserList{}, err + } + } + + guestUserList := v1.VirtualMachineInstanceGuestOSUserList{ + Items: userList, + } + + return guestUserList, nil +} + +func (v VirtLauncherClient) GetFilesystems() (v1.VirtualMachineInstanceFileSystemList, error) { + var fsList []v1.VirtualMachineInstanceFileSystem + + request := &cmdproto.EmptyRequest{} + ctx, cancel := context.WithTimeout(context.Background(), shortTimeout) + defer cancel() + + fsResponse, err := v.v1client.GetFilesystems(ctx, request) + var response *cmdproto.Response + if fsResponse != nil { + response = fsResponse.Response + } + + if err = handleError(err, "GetFilesystems", response); err != nil || fsResponse == nil { + return v1.VirtualMachineInstanceFileSystemList{}, err + } + + if fsResponse.GetGuestFilesystemsResponse() != "" { + if err := json.Unmarshal([]byte(fsResponse.GetGuestFilesystemsResponse()), &fsList); err != nil { + return v1.VirtualMachineInstanceFileSystemList{}, err + } + } + + filesystemList := v1.VirtualMachineInstanceFileSystemList{ + Items: fsList, + } + + return filesystemList, nil +} + +func (v VirtLauncherClient) Ping() error { + request := &cmdproto.EmptyRequest{} + ctx, cancel := context.WithTimeout(context.Background(), shortTimeout) + defer cancel() + response, err := v.v1client.Ping(ctx, request) + + err = handleError(err, "Ping", response) + return err +} + +func (v VirtLauncherClient) GuestPing(domainName string, timeoutSeconds int32) error { + request := &cmdproto.GuestPingRequest{ + DomainName: domainName, + TimeoutSeconds: timeoutSeconds, + } + ctx, cancel := context.WithTimeout( + context.Background(), + // we give the context a bit more time as the timeout should kick + // on the actual execution + time.Duration(timeoutSeconds)*time.Second+shortTimeout, + ) + defer cancel() + + _, err := v.v1client.GuestPing(ctx, request) + return err +} + +func (v VirtLauncherClient) GetQemuVersion() (string, error) { + request := &cmdproto.EmptyRequest{} + ctx, cancel := context.WithTimeout(context.Background(), shortTimeout) + defer cancel() + + versionResponse, err := v.v1client.GetQemuVersion(ctx, request) + var response *cmdproto.Response + if versionResponse != nil { + response = versionResponse.Response + } + if err = handleError(err, "GetQemuVersion", response); err != nil { + return "", err + } + + if versionResponse != nil && versionResponse.Version != "" { + return versionResponse.Version, nil + } + + return "", errors.New("error getting the qemu version") +} + +func (v VirtLauncherClient) GetSEVInfo() (*v1.SEVPlatformInfo, error) { + request := &cmdproto.EmptyRequest{} + ctx, cancel := context.WithTimeout(context.Background(), shortTimeout) + defer cancel() + + sevInfoResponse, err := v.v1client.GetSEVInfo(ctx, request) + if err = handleError(err, "GetSEVInfo", sevInfoResponse.GetResponse()); err != nil { + return nil, err + } + + sevPlatformInfo := &v1.SEVPlatformInfo{} + if err := json.Unmarshal(sevInfoResponse.GetSevInfo(), sevPlatformInfo); err != nil { + return nil, err + } + + return sevPlatformInfo, nil +} + +func (v VirtLauncherClient) Close() { + _ = v.conn.Close() +} + +func IsUnimplemented(err error) bool { + if grpcStatus, ok := status.FromError(err); ok { + if grpcStatus.Code() == codes.Unimplemented { + return true + } + } + return false +} +func handleError(err error, cmdName string, response *cmdproto.Response) error { + if IsDisconnected(err) { + return err + } else if IsUnimplemented(err) { + return err + } else if err != nil { + msg := fmt.Sprintf("unknown error encountered sending command %s: %s", cmdName, err.Error()) + return fmt.Errorf(msg) + } else if response != nil && !response.Success { + return fmt.Errorf("server error. command %s failed: %q", cmdName, response.Message) + } + return nil +} + +func IsDisconnected(err error) bool { + if err == nil { + return false + } + + if errors.Is(err, rpc.ErrShutdown) || errors.Is(err, io.ErrUnexpectedEOF) || err == io.EOF { + return true + } + + var opErr *net.OpError + if errors.As(err, &opErr) { + var syscallErr *os.SyscallError + if errors.As(opErr.Err, &syscallErr) { + // catches "connection reset by peer" + if errors.Is(syscallErr.Err, syscall.ECONNRESET) { + return true + } + } + } + + if grpcStatus, ok := status.FromError(err); ok { + + // see https://github.com/grpc/grpc-go/blob/master/codes/codes.go + switch grpcStatus.Code() { + case codes.Canceled: + // e.g. v1client connection closing + return true + } + + } + + return false +} diff --git a/images/virt-launcher/vlctl/pkg/client/grpc.go b/images/virt-launcher/vlctl/pkg/client/grpc.go new file mode 100644 index 0000000000..7251958d22 --- /dev/null +++ b/images/virt-launcher/vlctl/pkg/client/grpc.go @@ -0,0 +1,59 @@ +/* +Copyright The KubeVirt Authors. +Copyright 2025 Flant JSC + +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. + +Initially copied from https://github.com/kubevirt/kubevirt/blob/v1.6.2/pkg/util/net/grpc/grpc.go +*/ + +package client + +import ( + "context" + "net" + "time" + + "google.golang.org/grpc" +) + +const ( + ConnectTimeoutSeconds = 2 +) + +func DialSocket(socketPath string) (*grpc.ClientConn, error) { + return DialSocketWithTimeout(socketPath, 0) +} + +func DialSocketWithTimeout(socketPath string, timeout int) (*grpc.ClientConn, error) { + + options := []grpc.DialOption{ + grpc.WithAuthority("localhost"), + grpc.WithInsecure(), + grpc.WithDialer(func(addr string, timeout time.Duration) (net.Conn, error) { + return net.DialTimeout("unix", addr, timeout) + }), + grpc.WithBlock(), // dial sync in order to catch errors early + } + + if timeout > 0 { + options = append(options, + grpc.WithTimeout(time.Duration(timeout+ConnectTimeoutSeconds)*time.Second), + ) + } + + ctx, cancel := context.WithTimeout(context.Background(), ConnectTimeoutSeconds*time.Second) + defer cancel() + + return grpc.DialContext(ctx, socketPath, options...) +} diff --git a/images/virt-launcher/vlctl/proto/cmd.proto b/images/virt-launcher/vlctl/proto/cmd.proto new file mode 100644 index 0000000000..73102d8729 --- /dev/null +++ b/images/virt-launcher/vlctl/proto/cmd.proto @@ -0,0 +1,223 @@ +syntax = "proto3"; + +package kubevirt.cmd.v1; +option go_package = "virt-launcher-plug/pkg/api/generated/cmd"; + +service Cmd { + rpc SyncVirtualMachine(VMIRequest) returns (Response) {} + rpc PauseVirtualMachine(VMIRequest) returns (Response) {} + rpc UnpauseVirtualMachine(VMIRequest) returns (Response) {} + rpc FreezeVirtualMachine(FreezeRequest) returns (Response) {} + rpc UnfreezeVirtualMachine(VMIRequest) returns (Response) {} + rpc SoftRebootVirtualMachine(VMIRequest) returns (Response) {} + rpc ShutdownVirtualMachine(VMIRequest) returns (Response) {} + rpc KillVirtualMachine(VMIRequest) returns (Response) {} + rpc DeleteVirtualMachine(VMIRequest) returns (Response) {} + rpc MigrateVirtualMachine(MigrationRequest) returns (Response) {} + rpc SyncMigrationTarget(VMIRequest) returns (Response) {} + rpc CancelVirtualMachineMigration(VMIRequest) returns (Response) {} + rpc SignalTargetPodCleanup(VMIRequest) returns (Response) {} + rpc FinalizeVirtualMachineMigration(VMIRequest) returns (Response) {} + rpc HotplugHostDevices(VMIRequest) returns (Response) {} + rpc GetDomain(EmptyRequest) returns (DomainResponse) {} + rpc GetDomainStats(EmptyRequest) returns (DomainStatsResponse) {} + rpc GetGuestInfo(EmptyRequest) returns (GuestInfoResponse) {} + rpc GetUsers(EmptyRequest) returns (GuestUserListResponse) {} + rpc GetFilesystems(EmptyRequest) returns (GuestFilesystemsResponse) {} + rpc Ping(EmptyRequest) returns (Response) {} + rpc Exec(ExecRequest) returns (ExecResponse) {} + rpc GuestPing(GuestPingRequest) returns (GuestPingResponse) {} + rpc VirtualMachineMemoryDump(MemoryDumpRequest) returns (Response) {} + rpc GetQemuVersion(EmptyRequest) returns (QemuVersionResponse){} + rpc SyncVirtualMachineCPUs(VMIRequest) returns (Response) {} + rpc SyncVirtualMachineMemory(VMIRequest) returns (Response) {} + rpc GetSEVInfo(EmptyRequest) returns (SEVInfoResponse) {} + rpc GetLaunchMeasurement(VMIRequest) returns (LaunchMeasurementResponse) {} + rpc InjectLaunchSecret(InjectLaunchSecretRequest) returns (Response) {} + rpc GetAppliedVMIChecksum(EmptyRequest) returns (VMIChecksumResponse) {} + rpc MigrationProxy(MigrationProxyRequest) returns (Response); +} + +message QemuVersionResponse { + Response response = 1; + string version = 2; +} + +message VMI { + bytes vmiJson = 1; +} + +message CPU { + uint32 id = 1; + repeated uint32 siblings = 2; +} + +message Sibling { + uint32 id = 1; + uint64 value = 2; +} + +message Pages { + uint64 count = 1; + string unit = 2; + uint32 size = 3; +} + +message Memory { + uint64 amount = 1; + string unit = 2; +} + +message Cell { + uint32 id = 1; + Memory memory = 2; + repeated Pages pages = 3; + repeated Sibling distances = 4; + repeated CPU cpus = 5; +} + +message Topology { + repeated Cell numa_cells = 1; +} + +message SMBios { + string manufacturer = 1; + string product = 2; + string version = 3; + string sku = 4; + string family = 5; +} + +message DiskInfo { + string format = 1; + string backingFile = 2; + uint64 actualSize = 3; + uint64 virtualSize = 4; +} + +message ClusterConfig{ + bool ExpandDisksEnabled = 1; + bool FreePageReportingDisabled = 2; + bool BochsDisplayForEFIGuests = 3; + bool SerialConsoleLogDisabled = 4; +} + +message InterfaceBindingMigration{ + string Method = 1; +} + +message VirtualMachineOptions { + SMBios VirtualMachineSMBios = 1; + uint32 MemBalloonStatsPeriod = 2; + repeated string PreallocatedVolumes = 3; + Topology topology = 4; + map DisksInfo = 5; + // Deprecated, use clusterConfig.ExpandDisksEnabled + bool ExpandDisksEnabled = 6; + ClusterConfig clusterConfig = 7; + map interfaceDomainAttachment = 8; + map interfaceMigration = 9; +} + +message VMIRequest { + VMI vmi = 1; + VirtualMachineOptions options = 2; +} + +message MigrationRequest { + VMI vmi = 1; + bytes options = 2; +} + +message ExecRequest { + string domainName = 1; + string Command = 2; + repeated string Args = 3; + int32 timeoutSeconds = 4; +} + +message EmptyRequest {} + +message Response { + bool success = 1; + string message = 2; +} + +message DomainResponse { + Response response = 1; + string domain = 2; +} + +message DomainStatsResponse { + Response response = 1; + string domainStats = 2; +} + +message GuestInfoResponse { + Response response = 1; + string guestInfoResponse = 2; +} + +message GuestUserListResponse { + Response response = 1; + string guestUserListResponse = 2; +} + +message GuestFilesystemsResponse { + Response response = 1; + string guestFilesystemsResponse = 2; +} + +message ExecResponse { + Response response = 1; + int32 exitCode = 2; + string stdOut = 3; +} + +message GuestPingRequest { + string domainName = 1; + int32 timeoutSeconds = 2; +} + +message GuestPingResponse { + Response response = 1; +} + +message FreezeRequest { + VMI vmi = 1; + int32 unfreezeTimeoutSeconds = 2; +} + +message MemoryDumpRequest { + VMI vmi = 1; + string dumpPath = 2; +} + +message SEVInfoResponse { + Response response = 1; + bytes sevInfo = 2; +} + +message LaunchMeasurementResponse { + Response response = 1; + bytes launchMeasurement = 2; +} + +message InjectLaunchSecretRequest { + VMI vmi = 1; + bytes options = 2; +} + +message VMIChecksumResponse { + Response response = 1; + string checksum = 2; +} + +enum MigrationProxyAction { + START = 0; + STOP = 1; +} + +message MigrationProxyRequest { + MigrationProxyAction action = 1; +} diff --git a/images/virt-launcher/vlctl/proto/info.proto b/images/virt-launcher/vlctl/proto/info.proto new file mode 100644 index 0000000000..b99390ef3f --- /dev/null +++ b/images/virt-launcher/vlctl/proto/info.proto @@ -0,0 +1,14 @@ +syntax = "proto3"; + +package kubevirt.cmd.info; +option go_package = "virt-launcher-plug/pkg/api/generated/info"; + +service CmdInfo { + rpc Info (CmdInfoRequest) returns (CmdInfoResponse) {} +} + +message CmdInfoRequest {} + +message CmdInfoResponse { + repeated uint32 supportedCmdVersions = 1; +}