97c1300f53
* Add Get() and GetOptions. * Removed watcher. Outline of client. YAML templates * Added default service and deployment templates and types * Added API tests and cleaned up errors. * Small refactoring. Template package is no more. * Ripped out existing code in preparation to small rework * Reshuffled the source code to make it organized better * Create service and deployment in kubernetes runtime * Major cleanup and refactoring of Kubernetes runtime * Service now handles low level K8s API calls across both K8s deployment an service API objects * Runtime has a task queue that serves for queueing runtime action requests * General refactoring * No need for Lock in k8s service * Added kubernetes runtime env var to default deployment * Enable running different versions of the same service * Can't delete services through labels * Proto cruft. Added runtime.CreateOptions implementation in proto * Removed proxy service from default env variables * Make service name mandatory param to Get method * Get Delete changes from https://github.com/micro/go-micro/pull/945 * Replaced template files with global variables * Validate service names before sending K8s API request * Refactored Kubernetes API client. Fixed typos. * Added client.Resource to make API resources more explicit in code
72 lines
1.3 KiB
Go
72 lines
1.3 KiB
Go
package runtime
|
|
|
|
import (
|
|
"io"
|
|
)
|
|
|
|
type Option func(o *Options)
|
|
|
|
// Options configure runtime
|
|
type Options struct {
|
|
// Notifier for updates
|
|
Notifier Notifier
|
|
}
|
|
|
|
// AutoUpdate enables micro auto-updates
|
|
func WithNotifier(n Notifier) Option {
|
|
return func(o *Options) {
|
|
o.Notifier = n
|
|
}
|
|
}
|
|
|
|
type CreateOption func(o *CreateOptions)
|
|
|
|
// CreateOptions configure runtime services
|
|
type CreateOptions struct {
|
|
// command to execute including args
|
|
Command []string
|
|
// Environment to configure
|
|
Env []string
|
|
// Log output
|
|
Output io.Writer
|
|
}
|
|
|
|
// WithCommand specifies the command to execute
|
|
func WithCommand(c string, args ...string) CreateOption {
|
|
return func(o *CreateOptions) {
|
|
// set command
|
|
o.Command = []string{c}
|
|
// set args
|
|
o.Command = append(o.Command, args...)
|
|
}
|
|
}
|
|
|
|
// WithEnv sets the created service environment
|
|
func WithEnv(env []string) CreateOption {
|
|
return func(o *CreateOptions) {
|
|
o.Env = env
|
|
}
|
|
}
|
|
|
|
// WithOutput sets the arg output
|
|
func WithOutput(out io.Writer) CreateOption {
|
|
return func(o *CreateOptions) {
|
|
o.Output = out
|
|
}
|
|
}
|
|
|
|
type GetOption func(o *GetOptions)
|
|
|
|
// GetOptions queries runtime services
|
|
type GetOptions struct {
|
|
// Version queries services with given version
|
|
Version string
|
|
}
|
|
|
|
// WithVersion confifgures service version
|
|
func WithVersion(version string) GetOption {
|
|
return func(o *GetOptions) {
|
|
o.Version = version
|
|
}
|
|
}
|