mirror of
https://github.com/aljazceru/kata-containers.git
synced 2025-12-22 08:44:25 +01:00
Currently we sometimes pass it as a pointer and other times not. As a result, the view of sandbox across virtcontainers may not be the same and it costs extra memory copy each time we pass it by value. Fix it by ensuring sandbox is always passed by pointers. Fixes: #262 Signed-off-by: Peng Tao <bergwolf@gmail.com>
62 lines
1.3 KiB
Go
62 lines
1.3 KiB
Go
// Copyright (c) 2017 Intel Corporation
|
|
//
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
//
|
|
|
|
package virtcontainers
|
|
|
|
import (
|
|
"fmt"
|
|
)
|
|
|
|
type kataShim struct{}
|
|
|
|
// KataShimConfig is the structure providing specific configuration
|
|
// for kataShim implementation.
|
|
type KataShimConfig struct {
|
|
Path string
|
|
Debug bool
|
|
}
|
|
|
|
// start is the ccShim start implementation.
|
|
// It starts the cc-shim binary with URL and token flags provided by
|
|
// the proxy.
|
|
func (s *kataShim) start(sandbox *Sandbox, params ShimParams) (int, error) {
|
|
if sandbox.config == nil {
|
|
return -1, fmt.Errorf("Sandbox config cannot be nil")
|
|
}
|
|
|
|
config, ok := newShimConfig(*(sandbox.config)).(ShimConfig)
|
|
if !ok {
|
|
return -1, fmt.Errorf("Wrong shim config type, should be KataShimConfig type")
|
|
}
|
|
|
|
if config.Path == "" {
|
|
return -1, fmt.Errorf("Shim path cannot be empty")
|
|
}
|
|
|
|
if params.URL == "" {
|
|
return -1, fmt.Errorf("URL cannot be empty")
|
|
}
|
|
|
|
if params.Container == "" {
|
|
return -1, fmt.Errorf("Container cannot be empty")
|
|
}
|
|
|
|
if params.Token == "" {
|
|
return -1, fmt.Errorf("Process token cannot be empty")
|
|
}
|
|
|
|
args := []string{config.Path, "-agent", params.URL, "-container", params.Container, "-exec-id", params.Token}
|
|
|
|
if params.Terminal {
|
|
args = append(args, "-terminal")
|
|
}
|
|
|
|
if config.Debug {
|
|
args = append(args, "-log", "debug")
|
|
}
|
|
|
|
return startShim(args, params)
|
|
}
|