Skip to content

Commit

Permalink
adding to resource utility package
Browse files Browse the repository at this point in the history
  • Loading branch information
davidmdm committed Feb 19, 2024
1 parent 750de31 commit 4bf13be
Show file tree
Hide file tree
Showing 4 changed files with 89 additions and 57 deletions.
67 changes: 41 additions & 26 deletions cmd/platter/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,36 +16,51 @@ func main() {
}

func run() error {
json.NewEncoder(os.Stdout).Encode([]any{
k8.Deployment{
APIVersion: "apps/v1",
Kind: "Deployment",
Metadata: k8.Metadata{
Name: "sample-app",
Namespace: "default",
},
Spec: k8.DeploymentSpec{
Replicas: 3,
Selector: k8.Selector{
MatchLabels: map[string]string{"app": "sample-app"},
},
Template: k8.PodTemplateSpec{
Metadata: k8.TemplateMetadata{
Labels: map[string]string{"app": "sample-app"},
},
Spec: k8.PodSpec{
Containers: []k8.Container{
{
Name: "web-app",
Image: "alpine:latest",
Command: []string{"watch", "echo", "hello", "world"},
},
name := "sample-app"
labels := map[string]string{"app": name}

deployment := k8.Deployment{
APIVersion: "apps/v1",
Kind: "Deployment",
Metadata: k8.Metadata{
Name: name,
Namespace: "default",
},
Spec: k8.DeploymentSpec{
Replicas: 3,
Selector: k8.Selector{MatchLabels: labels},
Template: k8.PodTemplateSpec{
Metadata: k8.TemplateMetadata{Labels: labels},
Spec: k8.PodSpec{
Containers: []k8.Container{
{
Name: "web-app",
Image: "alpine:latest",
Command: []string{"watch", "echo", "hello", "world"},
},
},
},
},
},
})
}

service := k8.Service{
APIVersion: "v1",
Kind: "Service",
Metadata: k8.Metadata{Name: name},
Spec: k8.ServiceSpec{
Selector: labels,
Ports: []k8.ServicePort{
{
Protocol: "TCP",
Port: 80,
TargetPort: 3000,
},
},
},
}

return nil
return json.
NewEncoder(os.Stdout).
Encode([]any{deployment, service})
}
33 changes: 33 additions & 0 deletions pkg/utils/resource/deployment.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package resource

type Deployment Resource[DeploymentSpec]

type DeploymentSpec struct {
Replicas int32 `json:"replicas"`
Selector Selector `json:"selector"`
Template PodTemplateSpec `json:"template"`
}

type PodTemplateSpec struct {
Metadata TemplateMetadata `json:"metadata"`
Spec PodSpec `json:"spec"`
}

type TemplateMetadata struct {
Labels map[string]string `json:"labels"`
}

type PodSpec struct {
Containers []Container `json:"containers"`
}

type ContainerPort struct {
Name string `json:"name"`
ContainerPort int `json:"containerPort"`
}
type Container struct {
Name string `json:"name"`
Image string `json:"image"`
Command []string `json:"command,omitempty"`
Ports []ContainerPort `json:"ports,omitempty"`
}
31 changes: 0 additions & 31 deletions pkg/utils/resource/resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,37 +14,6 @@ type Resource[T any] struct {
Spec T `json:"spec"`
}

type Deployment Resource[DeploymentSpec]

type DeploymentSpec struct {
Replicas int32 `json:"replicas"`
Selector Selector `json:"selector"`
Template PodTemplateSpec `json:"template"`
}

type Selector struct {
MatchLabels map[string]string `json:"matchLabels"`
}

type PodTemplateSpec struct {
Metadata TemplateMetadata `json:"metadata"`
Spec PodSpec `json:"spec"`
}

type TemplateMetadata struct {
Labels map[string]string `json:"labels"`
}

type PodSpec struct {
Containers []Container `json:"containers"`
}

type Container struct {
Name string `json:"name"`
Image string `json:"image"`
Command []string `json:"command,omitempty"`
Ports []struct {
Name string `json:"name"`
ContainerPort int `json:"containerPort"`
} `json:"ports,omitempty"`
}
15 changes: 15 additions & 0 deletions pkg/utils/resource/service.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package resource

type ServicePort struct {
Name string `json:"name"`
Protocol string `json:"protocol"`
Port int `json:"port"`
TargetPort int `json:"targetPort"`
}

type ServiceSpec struct {
Selector map[string]string `json:"selector"`
Ports []ServicePort `json:"ports"`
}

type Service Resource[ServiceSpec]

0 comments on commit 4bf13be

Please sign in to comment.