mirror of
https://github.com/hanzoai/visor.git
synced 2026-09-24 17:04:14 +00:00
This change registers the profile command under the debug command group in the runsc CLI. This will be followed up with other profiling sub-command implementations. PiperOrigin-RevId: 974750514
119 lines
3.5 KiB
Go
119 lines
3.5 KiB
Go
// Copyright 2025 The gVisor Authors.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
// Package maincli is the main entrypoint for runsc.
|
|
package maincli
|
|
|
|
import (
|
|
"github.com/google/subcommands"
|
|
"gvisor.dev/gvisor/runsc/cli"
|
|
"gvisor.dev/gvisor/runsc/cmd"
|
|
"gvisor.dev/gvisor/runsc/cmd/alias"
|
|
"gvisor.dev/gvisor/runsc/cmd/nvproxy"
|
|
"gvisor.dev/gvisor/runsc/cmd/profile"
|
|
"gvisor.dev/gvisor/runsc/cmd/sentry/sentrycmd"
|
|
"gvisor.dev/gvisor/runsc/cmd/trace"
|
|
"gvisor.dev/gvisor/runsc/cmd/util"
|
|
|
|
// TODO(gvisor.dev/issue/13718): Temporary.
|
|
// Remove this import once sidecar binaries are replaced by on-disk binaries.
|
|
_ "gvisor.dev/gvisor/runsc/gvisorbinaries/embed"
|
|
)
|
|
|
|
const (
|
|
userGroup = ""
|
|
helperGroup = "helpers"
|
|
debugGroup = "debug"
|
|
metricGroup = "metrics"
|
|
internalGroup = "internal use only"
|
|
)
|
|
|
|
// Main is the main entrypoint.
|
|
func Main() {
|
|
alias.HandleAlias()
|
|
cmds, helpCmds := commands()
|
|
cli.Run(nil, cmds, helpCmds)
|
|
}
|
|
|
|
func commands() (map[util.SubCommand]string, []subcommands.Command) {
|
|
cmds := map[util.SubCommand]string{
|
|
// Register OCI user-facing runsc commands.
|
|
new(cmd.Checkpoint): userGroup,
|
|
new(cmd.Create): userGroup,
|
|
new(cmd.Delete): userGroup,
|
|
new(cmd.Events): userGroup,
|
|
new(cmd.Exec): userGroup,
|
|
new(cmd.Kill): userGroup,
|
|
new(cmd.List): userGroup,
|
|
new(cmd.PS): userGroup,
|
|
new(cmd.Pause): userGroup,
|
|
new(cmd.Restore): userGroup,
|
|
new(cmd.Resume): userGroup,
|
|
new(cmd.Run): userGroup,
|
|
new(cmd.Spec): userGroup,
|
|
new(cmd.Start): userGroup,
|
|
new(cmd.State): userGroup,
|
|
new(cmd.Update): userGroup,
|
|
new(cmd.Wait): userGroup,
|
|
|
|
// Non-OCI user-facing runsc commands.
|
|
new(cmd.Do): userGroup,
|
|
new(cmd.FSCheckpoint): userGroup,
|
|
new(cmd.PortForward): userGroup,
|
|
new(cmd.Read): userGroup,
|
|
new(cmd.SandboxExec): userGroup,
|
|
new(cmd.Tar): userGroup,
|
|
|
|
// Helpers.
|
|
new(cmd.Install): helperGroup,
|
|
new(cmd.Mitigate): helperGroup,
|
|
new(cmd.Uninstall): helperGroup,
|
|
new(nvproxy.Nvproxy): helperGroup,
|
|
new(trace.Trace): helperGroup,
|
|
new(cmd.CPUFeatures): helperGroup,
|
|
new(cmd.Features): helperGroup,
|
|
|
|
new(cmd.Debug): debugGroup,
|
|
new(profile.Profile): debugGroup,
|
|
new(cmd.Statefile): debugGroup,
|
|
new(cmd.Symbolize): debugGroup,
|
|
new(cmd.Usage): debugGroup,
|
|
new(cmd.ReadControl): debugGroup,
|
|
new(cmd.WriteControl): debugGroup,
|
|
|
|
new(cmd.MetricMetadata): metricGroup,
|
|
new(cmd.MetricExport): metricGroup,
|
|
new(cmd.MetricServer): metricGroup,
|
|
|
|
// Internal commands.
|
|
new(sentrycmd.Boot): internalGroup,
|
|
new(cmd.Gofer): internalGroup,
|
|
new(sentrycmd.Umount): internalGroup,
|
|
}
|
|
|
|
// Merge alias commands.
|
|
for k, v := range alias.Commands() {
|
|
cmds[k] = v
|
|
}
|
|
|
|
helpCmds := []subcommands.Command{
|
|
// For historical reasons, these subcommands are invoked as `runsc help
|
|
// platforms` and `runsc help syscalls`.
|
|
new(cmd.Platforms),
|
|
new(cmd.Syscalls),
|
|
}
|
|
|
|
return cmds, helpCmds
|
|
}
|