This repository has been archived by the owner on Jan 19, 2023. It is now read-only.
/
job_template.go
82 lines (65 loc) · 2.05 KB
/
job_template.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
/*
Copyright (c) 2019 the Octant contributors. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/
package printer
import (
"github.com/pkg/errors"
batchv1beta1 "k8s.io/api/batch/v1beta1"
"k8s.io/apimachinery/pkg/runtime"
"github.com/vmware/octant/pkg/view/component"
"github.com/vmware/octant/pkg/view/flexlayout"
)
type JobTemplate struct {
parent runtime.Object
jobTemplateSpec batchv1beta1.JobTemplateSpec
}
func NewJobTemplate(parent runtime.Object, jobTemplateSpec batchv1beta1.JobTemplateSpec) *JobTemplate {
return &JobTemplate{
parent: parent,
jobTemplateSpec: jobTemplateSpec,
}
}
func (jt *JobTemplate) AddToFlexLayout(fl *flexlayout.FlexLayout, options Options) error {
if fl == nil {
return errors.New("flex layout is nil")
}
portForwarder := options.DashConfig.PortForwarder()
headerSection := fl.AddSection()
jobTemplateHeader := NewJobTemplateHeader(jt.jobTemplateSpec.ObjectMeta.Labels)
headerLabels, err := jobTemplateHeader.Create()
if err != nil {
return err
}
if err := headerSection.Add(headerLabels, 23); err != nil {
return errors.Wrap(err, "add job template header")
}
containerSection := fl.AddSection()
for _, container := range jt.jobTemplateSpec.Spec.Template.Spec.Containers {
containerConfig := NewContainerConfiguration(jt.parent, &container, portForwarder, false, options)
summary, err := containerConfig.Create()
if err != nil {
return err
}
if err := containerSection.Add(summary, 16); err != nil {
return errors.Wrap(err, "add container")
}
}
return nil
}
// JobTemplateHeader creates a job template header
type JobTemplateHeader struct {
labels map[string]string
}
// NewJobTemplateHeader creates an instance of JobTemplateHeader
func NewJobTemplateHeader(labels map[string]string) *JobTemplateHeader {
return &JobTemplateHeader{
labels: labels,
}
}
// Create creates a label component
func (jth *JobTemplateHeader) Create() (*component.Labels, error) {
view := component.NewLabels(jth.labels)
view.Metadata.SetTitleText("Job Template")
return view, nil
}