Documentation
¶
Overview ¶
Package adapter provides the default implementation of an adapter Handler, called by the MeshServiceServer implementation.
It implements also common Kubernetes operations, leveraging the comparatively low-level client-go library, and handling of YAML-documents.
Index ¶
- Constants
- Variables
- func ErrClientConfig(err error) error
- func ErrClientSet(err error) error
- func ErrConnectSmi(err error) error
- func ErrCreateInstance(err error) error
- func ErrCreatingComponents(err error) error
- func ErrDeleteSmi(err error) error
- func ErrGenerateComponents(err error) error
- func ErrInstallSmi(err error) error
- func ErrListOperations(err error) error
- func ErrMeshConfig(err error) error
- func ErrNewSmi(err error) error
- func ErrRunSmi(err error) error
- func ErrSmiInit(des string) error
- func ErrStreamEvent(err error) error
- func ErrValidateKubeconfig(err error) error
- type Adapter
- func (h *Adapter) ApplyOperation(ctx context.Context, op OperationRequest, hchan *chan interface{}) error
- func (h *Adapter) GetComponentInfo(svc interface{}) error
- func (h *Adapter) GetName() string
- func (h *Adapter) GetVersion() string
- func (h *Adapter) ListOperations() (Operations, error)
- func (h *Adapter) RunSMITest(opts SMITestOptions) (Response, error)
- func (h *Adapter) StreamErr(e *meshes.EventsResponse, err error)
- func (h *Adapter) StreamInfo(e *meshes.EventsResponse)
- type Detail
- type Handler
- type Operation
- type OperationRequest
- type Operations
- type Response
- type SMITest
- type SMITestOptions
- type Service
- type Spec
- type Template
- type Version
Constants ¶
const ( ErrGetNameCode = "1000" ErrCreateInstanceCode = "1001" ErrMeshConfigCode = "1002" ErrValidateKubeconfigCode = "1003" ErrClientConfigCode = "1004" ErrClientSetCode = "1005" ErrStreamEventCode = "1006" ErrOpInvalidCode = "1007" ErrApplyOperationCode = "1008" ErrListOperationsCode = "1009" ErrNewSmiCode = "1010" ErrRunSmiCode = "1011" ErrNoResponseCode = "1011" ErrJSONMarshalCode = "1015" ErrSmiInitCode = "1007" ErrInstallSmiCode = "1008" ErrConnectSmiCode = "1009" ErrDeleteSmiCode = "1010" ErrGenerateComponentsCode = "1011" ErrAuthInfosInvalidMsgCode = "1012" ErrCreatingComponentsCode = "1013" )
const ( ServerKey = "server" MeshSpecKey = "mesh" OperationsKey = "operations" KubeconfigPathKey = "kubeconfig-path" )
Variables ¶
var ( ErrGetName = errors.New(ErrGetNameCode, errors.Alert, []string{"Unable to get mesh name"}, []string{}, []string{}, []string{}) ErrOpInvalid = errors.New(ErrOpInvalidCode, errors.Alert, []string{"Invalid operation"}, []string{}, []string{}, []string{}) ErrNoResponse = errors.New(ErrNoResponseCode, errors.Alert, []string{"No response from the smi tool"}, []string{}, []string{}, []string{}) // ErrAuthInfosInvalidMsg is the error message when the all of auth infos have invalid or inaccessible paths // as there certificate paths ErrAuthInfosInvalidMsg = errors.New( ErrAuthInfosInvalidMsgCode, errors.Alert, []string{"none of the auth info is valid. Certificate path is invalid or is inaccessible"}, []string{"One or more Kubernetes authentication info is either invalid or the certificate paths are invalid causing Meshery adapter setup failure"}, []string{"kubeconfig passed to Meshery may be referring to a \"context\" whose auth info is a file path", "adapter may have cached a copy of kubeconfig"}, []string{"ensure kubeconfig passed to Meshery is flattened", "if running adapter in Kubernetes, attempt to restart the pod; in development environment try deleting ~/.meshery s"}, ) )
var ( NoneVersion = []Version{"none"} NoneTemplate = []Template{"none"} )
Functions ¶
func ErrClientConfig ¶
func ErrClientSet ¶
func ErrConnectSmi ¶ added in v0.1.10
ErrConnectSmi is the error for connecting to smi tool
func ErrCreateInstance ¶ added in v0.1.4
func ErrCreatingComponents ¶ added in v0.5.2
ErrCreatingComponents
func ErrDeleteSmi ¶ added in v0.1.10
ErrDeleteSmi is the error for deleting smi tool
func ErrGenerateComponents ¶ added in v0.1.23
will be depracated
func ErrInstallSmi ¶ added in v0.1.10
ErrInstallSmi is the error for installing smi tool
func ErrListOperations ¶ added in v0.1.2
func ErrMeshConfig ¶
func ErrSmiInit ¶ added in v0.1.10
ErrSmiInit is the error for smi init method
func ErrStreamEvent ¶
func ErrValidateKubeconfig ¶ added in v0.1.4
Types ¶
type Adapter ¶
type Adapter struct { Config meshkitCfg.Handler KubeconfigHandler meshkitCfg.Handler Log logger.Handler EventStreamer *events.EventStreamer }
Adapter contains all handlers, channels, clients, and other parameters for an adapter. Use type embedding in a specific adapter to extend it.
func (*Adapter) ApplyOperation ¶
func (h *Adapter) ApplyOperation(ctx context.Context, op OperationRequest, hchan *chan interface{}) error
Applies an adapter operation. This is adapter specific and needs to be implemented by each adapter.
func (*Adapter) GetComponentInfo ¶ added in v0.1.14
func (*Adapter) GetVersion ¶ added in v0.1.2
func (*Adapter) ListOperations ¶
func (h *Adapter) ListOperations() (Operations, error)
List all operations an adapter supports.
func (*Adapter) RunSMITest ¶ added in v0.1.10
func (h *Adapter) RunSMITest(opts SMITestOptions) (Response, error)
RunSMITest runs the SMI test on the adapter's service mesh
func (*Adapter) StreamInfo ¶
func (h *Adapter) StreamInfo(e *meshes.EventsResponse)
type Detail ¶ added in v0.1.10
type Detail struct { SmiSpecification string `json:"smi_specification,omitempty"` SmiVersion string `json:"smi_version,omitempty"` Time string `json:"time,omitempty"` Assertions string `json:"assertions,omitempty"` Result string `json:"result,omitempty"` Reason string `json:"reason,omitempty"` Capability string `json:"capability,omitempty"` Status string `json:"status,omitempty"` }
type Handler ¶
type Handler interface { GetName() string // Returns the name of the adapter. GetComponentInfo(interface{}) error // Returns the component info. // CreateInstance(*chan interface{}) error // Instantiates clients used in deploying and managing mesh instances, e.g. Kubernetes clients. ApplyOperation(context.Context, OperationRequest) error // Applies an adapter operation. This is adapter specific and needs to be implemented by each adapter. ListOperations() (Operations, error) // List all operations an adapter supports. StreamErr(*meshes.EventsResponse, error) // Streams an error event, e.g. to a channel StreamInfo(*meshes.EventsResponse) // Streams an informational event, e.g. to a channel }
Interface Handler is extended by adapters, and used in package api/grpc that implements the MeshServiceServer.
type Operation ¶
type Operation struct { Type int32 `json:"type,string,omitempty"` Description string `json:"description,omitempty"` Versions []Version `json:"versions,omitempty"` Templates []Template `json:"templates,omitempty"` Services []Service `json:"services,omitempty"` AdditionalProperties map[string]string `json:"additional_properties,omitempty"` }
Operation represents an operation of a given Type (see meshes.OpCategory), with a set of properties.
type OperationRequest ¶
type OperationRequest struct { OperationName string // The identifier of the operation. It is used as key in the Operations map. Avoid using a verb as part of the name, as it designates both provisioning as deprovisioning operations. Namespace string // The namespace to use in the environment, e.g. Kubernetes, where the operation is applied. Username string // User to execute operation as, if any. CustomBody string // Custom operation manifest, in the case of a custom operation (OpCategory_CUSTOM). IsDeleteOperation bool // If true, the operation specified by OperationName is reverted, i.e. all resources created are deleted. OperationID string // ID of the operation, if any. This identifies a specific operation invocation. K8sConfigs []string Version string // Service mesh version to be installed, defaults to latest version. }
OperationRequest contains the request data from meshes.ApplyRuleRequest.
type Operations ¶
Operations contains all operations supported by an adapter.
type Response ¶ added in v0.1.10
type Response struct { ID string `json:"id,omitempty"` Date string `json:"date,omitempty"` MeshName string `json:"mesh_name,omitempty"` MeshVersion string `json:"mesh_version,omitempty"` CasesPassed string `json:"cases_passed,omitempty"` PassingPercentage string `json:"passing_percentage,omitempty"` Status string `json:"status,omitempty"` MoreDetails []*Detail `json:"more_details,omitempty"` }
type SMITestOptions ¶ added in v0.1.10
type SMITestOptions struct { Ctx context.Context OperationID string // Namespace is the namespace where the SMI conformance // must be installed // // Defaults to "meshery" Namespace string // Manifest is the remote location of manifest Manifest string // Labels is the standard kubernetes labels Labels map[string]string // Annotations is the standard kubernetes annotations Annotations map[string]string Kubeconfigs []string }
SMITestOptions describes the options for the SMI Test runner