mirror of
https://github.com/bcicen/ctop.git
synced 2024-08-30 18:23:19 +00:00
add --connector switch, validation
This commit is contained in:
parent
eeac65da8c
commit
d372043a17
@ -19,7 +19,7 @@ type Docker struct {
|
|||||||
lock sync.RWMutex
|
lock sync.RWMutex
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewDocker() *Docker {
|
func NewDocker() Connector {
|
||||||
// init docker client
|
// init docker client
|
||||||
client, err := api.NewClientFromEnv()
|
client, err := api.NewClientFromEnv()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -7,7 +7,7 @@ import (
|
|||||||
|
|
||||||
var log = logging.Init()
|
var log = logging.Init()
|
||||||
|
|
||||||
type ContainerSource interface {
|
type Connector interface {
|
||||||
All() container.Containers
|
All() container.Containers
|
||||||
Get(string) (*container.Container, bool)
|
Get(string) (*container.Container, bool)
|
||||||
}
|
}
|
||||||
|
@ -59,7 +59,7 @@ func getFactory(opts RuncOpts) (libcontainer.Factory, error) {
|
|||||||
return libcontainer.New(opts.root, cgroupManager, libcontainer.CriuPath("criu"))
|
return libcontainer.New(opts.root, cgroupManager, libcontainer.CriuPath("criu"))
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewRunc() *Runc {
|
func NewRunc() Connector {
|
||||||
opts, err := readRuncOpts()
|
opts, err := readRuncOpts()
|
||||||
runcFailOnErr(err)
|
runcFailOnErr(err)
|
||||||
|
|
||||||
|
12
cursor.go
12
cursor.go
@ -8,16 +8,20 @@ import (
|
|||||||
ui "github.com/gizak/termui"
|
ui "github.com/gizak/termui"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var enabledConnectors = map[string]func() connector.Connector{
|
||||||
|
"docker": connector.NewDocker,
|
||||||
|
"runc": connector.NewRunc,
|
||||||
|
}
|
||||||
|
|
||||||
type GridCursor struct {
|
type GridCursor struct {
|
||||||
selectedID string // id of currently selected container
|
selectedID string // id of currently selected container
|
||||||
filtered container.Containers
|
filtered container.Containers
|
||||||
cSource connector.ContainerSource
|
cSource connector.Connector
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewGridCursor() *GridCursor {
|
func NewGridCursor(connector string) *GridCursor {
|
||||||
return &GridCursor{
|
return &GridCursor{
|
||||||
cSource: connector.NewRunc(),
|
cSource: enabledConnectors[connector](),
|
||||||
//cSource: connector.NewDocker(),
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
18
main.go
18
main.go
@ -4,6 +4,7 @@ import (
|
|||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/bcicen/ctop/config"
|
"github.com/bcicen/ctop/config"
|
||||||
"github.com/bcicen/ctop/container"
|
"github.com/bcicen/ctop/container"
|
||||||
@ -37,8 +38,11 @@ func main() {
|
|||||||
var sortFieldFlag = flag.String("s", "", "select container sort field")
|
var sortFieldFlag = flag.String("s", "", "select container sort field")
|
||||||
var reverseSortFlag = flag.Bool("r", false, "reverse container sort order")
|
var reverseSortFlag = flag.Bool("r", false, "reverse container sort order")
|
||||||
var invertFlag = flag.Bool("i", false, "invert default colors")
|
var invertFlag = flag.Bool("i", false, "invert default colors")
|
||||||
|
var connectorFlag = flag.String("connector", "docker", "container connector to use")
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
|
|
||||||
|
validConnector(*connectorFlag)
|
||||||
|
|
||||||
if *versionFlag {
|
if *versionFlag {
|
||||||
fmt.Println(versionStr)
|
fmt.Println(versionStr)
|
||||||
os.Exit(0)
|
os.Exit(0)
|
||||||
@ -75,7 +79,7 @@ func main() {
|
|||||||
|
|
||||||
defer Shutdown()
|
defer Shutdown()
|
||||||
// init grid, cursor, header
|
// init grid, cursor, header
|
||||||
cursor = NewGridCursor()
|
cursor = NewGridCursor(*connectorFlag)
|
||||||
cGrid = compact.NewCompactGrid()
|
cGrid = compact.NewCompactGrid()
|
||||||
header = widgets.NewCTopHeader()
|
header = widgets.NewCTopHeader()
|
||||||
|
|
||||||
@ -104,6 +108,18 @@ func Shutdown() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func validConnector(s string) {
|
||||||
|
if _, ok := enabledConnectors[s]; !ok {
|
||||||
|
fmt.Printf("invalid connector type: %s", s)
|
||||||
|
var connectors []string
|
||||||
|
for k, _ := range enabledConnectors {
|
||||||
|
connectors = append(connectors, k)
|
||||||
|
}
|
||||||
|
fmt.Printf("connector must be one of: %s", strings.Join(connectors, ","))
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// ensure a given sort field is valid
|
// ensure a given sort field is valid
|
||||||
func validSort(s string) {
|
func validSort(s string) {
|
||||||
if _, ok := container.Sorters[s]; !ok {
|
if _, ok := container.Sorters[s]; !ok {
|
||||||
|
Loading…
Reference in New Issue
Block a user