Merge pull request #8093 from mxpv/instrument
Extract CRI instrument into separate package
This commit is contained in:
commit
c6cf6b2522
@ -14,7 +14,7 @@
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package sbserver
|
package instrument
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
@ -29,23 +29,49 @@ import (
|
|||||||
ctrdutil "github.com/containerd/containerd/pkg/cri/util"
|
ctrdutil "github.com/containerd/containerd/pkg/cri/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
// instrumentedService wraps service with containerd namespace and logs.
|
const (
|
||||||
type instrumentedService struct {
|
// criSpanPrefix is a prefix for CRI server specific spans
|
||||||
c *criService
|
criSpanPrefix = "pkg.cri.server"
|
||||||
|
)
|
||||||
|
|
||||||
|
// criService is an CRI server dependency to be wrapped with instrumentation.
|
||||||
|
type criService interface {
|
||||||
|
GRPCServices
|
||||||
|
|
||||||
|
IsInitialized() bool
|
||||||
|
|
||||||
|
// AlphaVersion returns the runtime name, runtime version and runtime API version.
|
||||||
|
AlphaVersion(ctx context.Context, r *runtime_alpha.VersionRequest) (*runtime_alpha.VersionResponse, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
func newInstrumentedService(c *criService) grpcServices {
|
// GRPCServices are all the grpc services provided by cri containerd.
|
||||||
|
type GRPCServices interface {
|
||||||
|
runtime.RuntimeServiceServer
|
||||||
|
runtime.ImageServiceServer
|
||||||
|
}
|
||||||
|
|
||||||
|
type GRPCAlphaServices interface {
|
||||||
|
runtime_alpha.RuntimeServiceServer
|
||||||
|
runtime_alpha.ImageServiceServer
|
||||||
|
}
|
||||||
|
|
||||||
|
// instrumentedService wraps service with containerd namespace and logs.
|
||||||
|
type instrumentedService struct {
|
||||||
|
c criService
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewService(c criService) GRPCServices {
|
||||||
return &instrumentedService{c: c}
|
return &instrumentedService{c: c}
|
||||||
}
|
}
|
||||||
|
|
||||||
// instrumentedAlphaService wraps service with containerd namespace and logs.
|
// instrumentedAlphaService wraps service with containerd namespace and logs.
|
||||||
type instrumentedAlphaService struct {
|
type instrumentedAlphaService struct {
|
||||||
c *criService
|
c criService
|
||||||
runtime_alpha.UnimplementedRuntimeServiceServer
|
runtime_alpha.UnimplementedRuntimeServiceServer
|
||||||
runtime_alpha.UnimplementedImageServiceServer
|
runtime_alpha.UnimplementedImageServiceServer
|
||||||
}
|
}
|
||||||
|
|
||||||
func newInstrumentedAlphaService(c *criService) grpcAlphaServices {
|
func NewAlphaService(c criService) GRPCAlphaServices {
|
||||||
return &instrumentedAlphaService{c: c}
|
return &instrumentedAlphaService{c: c}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -54,7 +80,7 @@ func newInstrumentedAlphaService(c *criService) grpcAlphaServices {
|
|||||||
// initialized.
|
// initialized.
|
||||||
// NOTE(random-liu): All following functions MUST check initialized at the beginning.
|
// NOTE(random-liu): All following functions MUST check initialized at the beginning.
|
||||||
func (in *instrumentedService) checkInitialized() error {
|
func (in *instrumentedService) checkInitialized() error {
|
||||||
if in.c.initialized.IsSet() {
|
if in.c.IsInitialized() {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
return errors.New("server is not initialized yet")
|
return errors.New("server is not initialized yet")
|
||||||
@ -65,7 +91,7 @@ func (in *instrumentedService) checkInitialized() error {
|
|||||||
// initialized.
|
// initialized.
|
||||||
// NOTE(random-liu): All following functions MUST check initialized at the beginning.
|
// NOTE(random-liu): All following functions MUST check initialized at the beginning.
|
||||||
func (in *instrumentedAlphaService) checkInitialized() error {
|
func (in *instrumentedAlphaService) checkInitialized() error {
|
||||||
if in.c.initialized.IsSet() {
|
if in.c.IsInitialized() {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
return errors.New("server is not initialized yet")
|
return errors.New("server is not initialized yet")
|
@ -98,9 +98,6 @@ const (
|
|||||||
|
|
||||||
// runtimeRunhcsV1 is the runtime type for runhcs.
|
// runtimeRunhcsV1 is the runtime type for runhcs.
|
||||||
runtimeRunhcsV1 = "io.containerd.runhcs.v1"
|
runtimeRunhcsV1 = "io.containerd.runhcs.v1"
|
||||||
|
|
||||||
// name prefix for CRI sbserver specific spans
|
|
||||||
criSpanPrefix = "pkg.cri.sbserver"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// makeSandboxName generates sandbox name from sandbox metadata. The name
|
// makeSandboxName generates sandbox name from sandbox metadata. The name
|
||||||
|
@ -29,6 +29,7 @@ import (
|
|||||||
|
|
||||||
"github.com/containerd/containerd"
|
"github.com/containerd/containerd"
|
||||||
"github.com/containerd/containerd/oci"
|
"github.com/containerd/containerd/oci"
|
||||||
|
"github.com/containerd/containerd/pkg/cri/instrument"
|
||||||
"github.com/containerd/containerd/pkg/cri/sbserver/podsandbox"
|
"github.com/containerd/containerd/pkg/cri/sbserver/podsandbox"
|
||||||
"github.com/containerd/containerd/pkg/cri/streaming"
|
"github.com/containerd/containerd/pkg/cri/streaming"
|
||||||
"github.com/containerd/containerd/pkg/kmutex"
|
"github.com/containerd/containerd/pkg/kmutex"
|
||||||
@ -56,24 +57,16 @@ import (
|
|||||||
// defaultNetworkPlugin is used for the default CNI configuration
|
// defaultNetworkPlugin is used for the default CNI configuration
|
||||||
const defaultNetworkPlugin = "default"
|
const defaultNetworkPlugin = "default"
|
||||||
|
|
||||||
// grpcServices are all the grpc services provided by cri containerd.
|
|
||||||
type grpcServices interface {
|
|
||||||
runtime.RuntimeServiceServer
|
|
||||||
runtime.ImageServiceServer
|
|
||||||
}
|
|
||||||
|
|
||||||
type grpcAlphaServices interface {
|
|
||||||
runtime_alpha.RuntimeServiceServer
|
|
||||||
runtime_alpha.ImageServiceServer
|
|
||||||
}
|
|
||||||
|
|
||||||
// CRIService is the interface implement CRI remote service server.
|
// CRIService is the interface implement CRI remote service server.
|
||||||
type CRIService interface {
|
type CRIService interface {
|
||||||
Run() error
|
runtime.RuntimeServiceServer
|
||||||
// io.Closer is used by containerd to gracefully stop cri service.
|
runtime.ImageServiceServer
|
||||||
|
// Closer is used by containerd to gracefully stop cri service.
|
||||||
io.Closer
|
io.Closer
|
||||||
|
|
||||||
|
Run() error
|
||||||
|
|
||||||
Register(*grpc.Server) error
|
Register(*grpc.Server) error
|
||||||
grpcServices
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// criService implements CRIService.
|
// criService implements CRIService.
|
||||||
@ -329,13 +322,20 @@ func (c *criService) Close() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// IsInitialized indicates whether CRI service has finished initialization.
|
||||||
|
func (c *criService) IsInitialized() bool {
|
||||||
|
return c.initialized.IsSet()
|
||||||
|
}
|
||||||
|
|
||||||
func (c *criService) register(s *grpc.Server) error {
|
func (c *criService) register(s *grpc.Server) error {
|
||||||
instrumented := newInstrumentedService(c)
|
instrumented := instrument.NewService(c)
|
||||||
runtime.RegisterRuntimeServiceServer(s, instrumented)
|
runtime.RegisterRuntimeServiceServer(s, instrumented)
|
||||||
runtime.RegisterImageServiceServer(s, instrumented)
|
runtime.RegisterImageServiceServer(s, instrumented)
|
||||||
instrumentedAlpha := newInstrumentedAlphaService(c)
|
|
||||||
|
instrumentedAlpha := instrument.NewAlphaService(c)
|
||||||
runtime_alpha.RegisterRuntimeServiceServer(s, instrumentedAlpha)
|
runtime_alpha.RegisterRuntimeServiceServer(s, instrumentedAlpha)
|
||||||
runtime_alpha.RegisterImageServiceServer(s, instrumentedAlpha)
|
runtime_alpha.RegisterImageServiceServer(s, instrumentedAlpha)
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -94,9 +94,6 @@ const (
|
|||||||
|
|
||||||
// runtimeRunhcsV1 is the runtime type for runhcs.
|
// runtimeRunhcsV1 is the runtime type for runhcs.
|
||||||
runtimeRunhcsV1 = "io.containerd.runhcs.v1"
|
runtimeRunhcsV1 = "io.containerd.runhcs.v1"
|
||||||
|
|
||||||
// name prefix for CRI server specific spans
|
|
||||||
criSpanPrefix = "pkg.cri.server"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// makeSandboxName generates sandbox name from sandbox metadata. The name
|
// makeSandboxName generates sandbox name from sandbox metadata. The name
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -28,6 +28,7 @@ import (
|
|||||||
|
|
||||||
"github.com/containerd/containerd"
|
"github.com/containerd/containerd"
|
||||||
"github.com/containerd/containerd/oci"
|
"github.com/containerd/containerd/oci"
|
||||||
|
"github.com/containerd/containerd/pkg/cri/instrument"
|
||||||
"github.com/containerd/containerd/pkg/cri/streaming"
|
"github.com/containerd/containerd/pkg/cri/streaming"
|
||||||
"github.com/containerd/containerd/pkg/kmutex"
|
"github.com/containerd/containerd/pkg/kmutex"
|
||||||
"github.com/containerd/containerd/pkg/nri"
|
"github.com/containerd/containerd/pkg/nri"
|
||||||
@ -54,25 +55,16 @@ import (
|
|||||||
// defaultNetworkPlugin is used for the default CNI configuration
|
// defaultNetworkPlugin is used for the default CNI configuration
|
||||||
const defaultNetworkPlugin = "default"
|
const defaultNetworkPlugin = "default"
|
||||||
|
|
||||||
// grpcServices are all the grpc services provided by cri containerd.
|
|
||||||
type grpcServices interface {
|
|
||||||
runtime.RuntimeServiceServer
|
|
||||||
runtime.ImageServiceServer
|
|
||||||
}
|
|
||||||
|
|
||||||
type grpcAlphaServices interface {
|
|
||||||
runtime_alpha.RuntimeServiceServer
|
|
||||||
runtime_alpha.ImageServiceServer
|
|
||||||
}
|
|
||||||
|
|
||||||
// CRIService is the interface implement CRI remote service server.
|
// CRIService is the interface implement CRI remote service server.
|
||||||
type CRIService interface {
|
type CRIService interface {
|
||||||
|
runtime.RuntimeServiceServer
|
||||||
|
runtime.ImageServiceServer
|
||||||
|
// Closer is used by containerd to gracefully stop cri service.
|
||||||
|
io.Closer
|
||||||
|
|
||||||
Run() error
|
Run() error
|
||||||
|
|
||||||
// io.Closer is used by containerd to gracefully stop cri service.
|
|
||||||
io.Closer
|
|
||||||
Register(*grpc.Server) error
|
Register(*grpc.Server) error
|
||||||
grpcServices
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// criService implements CRIService.
|
// criService implements CRIService.
|
||||||
@ -319,13 +311,20 @@ func (c *criService) Close() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// IsInitialized indicates whether CRI service has finished initialization.
|
||||||
|
func (c *criService) IsInitialized() bool {
|
||||||
|
return c.initialized.IsSet()
|
||||||
|
}
|
||||||
|
|
||||||
func (c *criService) register(s *grpc.Server) error {
|
func (c *criService) register(s *grpc.Server) error {
|
||||||
instrumented := newInstrumentedService(c)
|
instrumented := instrument.NewService(c)
|
||||||
runtime.RegisterRuntimeServiceServer(s, instrumented)
|
runtime.RegisterRuntimeServiceServer(s, instrumented)
|
||||||
runtime.RegisterImageServiceServer(s, instrumented)
|
runtime.RegisterImageServiceServer(s, instrumented)
|
||||||
instrumentedAlpha := newInstrumentedAlphaService(c)
|
|
||||||
|
instrumentedAlpha := instrument.NewAlphaService(c)
|
||||||
runtime_alpha.RegisterRuntimeServiceServer(s, instrumentedAlpha)
|
runtime_alpha.RegisterRuntimeServiceServer(s, instrumentedAlpha)
|
||||||
runtime_alpha.RegisterImageServiceServer(s, instrumentedAlpha)
|
runtime_alpha.RegisterImageServiceServer(s, instrumentedAlpha)
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user