Runtime Custom Source (Part 2) (#1169)
This commit is contained in:
		| @@ -270,8 +270,10 @@ func (k *kubernetes) Create(s *runtime.Service, opts ...runtime.CreateOption) er | ||||
| 	if len(options.Type) == 0 { | ||||
| 		options.Type = k.options.Type | ||||
| 	} | ||||
| 	if len(k.options.Source) > 0 { | ||||
| 		s.Source = k.options.Source | ||||
| 	} | ||||
|  | ||||
| 	// create new kubernetes micro service | ||||
| 	service := newService(s, options) | ||||
|  | ||||
| 	// start the service | ||||
| @@ -343,8 +345,7 @@ func (k *kubernetes) Delete(s *runtime.Service) error { | ||||
|  | ||||
| 	// create new kubernetes micro service | ||||
| 	service := newService(s, runtime.CreateOptions{ | ||||
| 		Type:      k.options.Type, | ||||
| 		BaseImage: k.options.Source, | ||||
| 		Type: k.options.Type, | ||||
| 	}) | ||||
|  | ||||
| 	return service.Stop(k.client) | ||||
|   | ||||
| @@ -34,6 +34,14 @@ func newService(s *runtime.Service, c runtime.CreateOptions) *service { | ||||
| 	kservice := client.NewService(name, version, c.Type) | ||||
| 	kdeploy := client.NewDeployment(name, version, c.Type) | ||||
|  | ||||
| 	if len(s.Source) > 0 { | ||||
| 		for i := range kdeploy.Spec.Template.PodSpec.Containers { | ||||
| 			kdeploy.Spec.Template.PodSpec.Containers[i].Image = s.Source | ||||
| 			kdeploy.Spec.Template.PodSpec.Containers[i].Command = []string{} | ||||
| 			kdeploy.Spec.Template.PodSpec.Containers[i].Args = []string{name} | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	// attach our values to the deployment; name, version, source | ||||
| 	kdeploy.Metadata.Annotations["name"] = s.Name | ||||
| 	kdeploy.Metadata.Annotations["version"] = s.Version | ||||
| @@ -64,9 +72,6 @@ func newService(s *runtime.Service, c runtime.CreateOptions) *service { | ||||
| 	// specify the command to exec | ||||
| 	if len(c.Command) > 0 { | ||||
| 		kdeploy.Spec.Template.PodSpec.Containers[0].Command = c.Command | ||||
| 	} else if len(s.Source) > 0 { | ||||
| 		// default command for our k8s service should be source | ||||
| 		kdeploy.Spec.Template.PodSpec.Containers[0].Command = []string{"go", "run", s.Source} | ||||
| 	} | ||||
|  | ||||
| 	return &service{ | ||||
|   | ||||
| @@ -51,8 +51,6 @@ type CreateOptions struct { | ||||
| 	Output io.Writer | ||||
| 	// Type of service to create | ||||
| 	Type string | ||||
| 	// Base image for docker | ||||
| 	BaseImage string | ||||
| } | ||||
|  | ||||
| // ReadOptions queries runtime services | ||||
| @@ -94,13 +92,6 @@ func WithOutput(out io.Writer) CreateOption { | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // WithBaseImage sets the docker img | ||||
| func WithBaseImage(img string) CreateOption { | ||||
| 	return func(o *CreateOptions) { | ||||
| 		o.BaseImage = img | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // ReadService returns services with the given name | ||||
| func ReadService(service string) ReadOption { | ||||
| 	return func(o *ReadOptions) { | ||||
|   | ||||
| @@ -226,11 +226,9 @@ func NewService(name, version, typ string) *Service { | ||||
| } | ||||
|  | ||||
| // NewService returns default micro kubernetes deployment definition | ||||
| func NewDeployment(name, version, typ string, opts ...DeploymentOption) *Deployment { | ||||
| func NewDeployment(name, version, typ string) *Deployment { | ||||
| 	log.Tracef("kubernetes default deployment: name: %s, version: %s", name, version) | ||||
|  | ||||
| 	options := NewDeploymentOptions(opts) | ||||
|  | ||||
| 	Labels := map[string]string{ | ||||
| 		"name":    name, | ||||
| 		"version": version, | ||||
| @@ -267,7 +265,7 @@ func NewDeployment(name, version, typ string, opts ...DeploymentOption) *Deploym | ||||
| 			PodSpec: &PodSpec{ | ||||
| 				Containers: []Container{{ | ||||
| 					Name:    name, | ||||
| 					Image:   options.BaseImage, | ||||
| 					Image:   DefaultImage, | ||||
| 					Env:     []EnvVar{env}, | ||||
| 					Command: []string{"go", "run", "main.go"}, | ||||
| 					Ports: []ContainerPort{{ | ||||
|   | ||||
| @@ -1,9 +1,5 @@ | ||||
| package client | ||||
|  | ||||
| type DeploymentOptions struct { | ||||
| 	BaseImage string | ||||
| } | ||||
|  | ||||
| type LogOptions struct { | ||||
| 	Params map[string]string | ||||
| } | ||||
| @@ -14,7 +10,6 @@ type WatchOptions struct { | ||||
|  | ||||
| type LogOption func(*LogOptions) | ||||
| type WatchOption func(*WatchOptions) | ||||
| type DeploymentOption func(*DeploymentOptions) | ||||
|  | ||||
| // LogParams provides additional params for logs | ||||
| func LogParams(p map[string]string) LogOption { | ||||
| @@ -29,24 +24,3 @@ func WatchParams(p map[string]string) WatchOption { | ||||
| 		w.Params = p | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // WithBaseImage sets the base image for the deployment | ||||
| func WithBaseImage(img string) DeploymentOption { | ||||
| 	return func(d *DeploymentOptions) { | ||||
| 		d.BaseImage = img | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // NewDeploymentOptions returns an initialized DeploymentOptions | ||||
| func NewDeploymentOptions(opts []DeploymentOption) DeploymentOptions { | ||||
| 	var options DeploymentOptions | ||||
| 	for _, o := range opts { | ||||
| 		o(&options) | ||||
| 	} | ||||
|  | ||||
| 	if options.BaseImage == "" { | ||||
| 		options.BaseImage = DefaultImage | ||||
| 	} | ||||
|  | ||||
| 	return options | ||||
| } | ||||
|   | ||||
| @@ -60,6 +60,10 @@ spec: | ||||
|             value: "{{ .Value }}" | ||||
|           {{- end }} | ||||
|           {{- end }} | ||||
|           args: | ||||
|           {{- range .Args }} | ||||
|           - {{.}} | ||||
|           {{- end }} | ||||
|           command: | ||||
|           {{- range .Command }} | ||||
|           - {{.}} | ||||
|   | ||||
| @@ -20,6 +20,7 @@ type Container struct { | ||||
| 	Image   string          `json:"image"` | ||||
| 	Env     []EnvVar        `json:"env,omitempty"` | ||||
| 	Command []string        `json:"command,omitempty"` | ||||
| 	Args    []string        `json:"args,omitempty"` | ||||
| 	Ports   []ContainerPort `json:"ports,omitempty"` | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user