Skip to content
This repository was archived by the owner on Dec 30, 2020. It is now read-only.

Commit 6f6556d

Browse files
author
sashayakovtseva
committed
Allow custom jc image in operator
1 parent ac26437 commit 6f6556d

File tree

2 files changed

+31
-12
lines changed

2 files changed

+31
-12
lines changed

cmd/operator/main.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ func main() {
5050
_ = flag.Set("logtostderr", "true")
5151
jcUID := flag.Int64("jc-uid", 1000, "uid to be used for running job-companion containers")
5252
jcGID := flag.Int64("jc-gid", 1000, "gid to be used for running job-companion containers")
53+
jcImage := flag.String("jc-image", "", "custom job companion image to use")
5354
flag.Parse()
5455
defer glog.Flush()
5556

@@ -90,8 +91,11 @@ func main() {
9091
glog.Fatalf("Failed to add manager to apis scheme: %v", err)
9192
}
9293

93-
// Setup SlurmJob controller
94-
sj := slurmjob.NewReconciler(mgr, *jcUID, *jcGID)
94+
var opts []slurmjob.Opt
95+
if *jcImage != "" {
96+
opts = append(opts, slurmjob.WithCustomJobCompanionImage(*jcImage))
97+
}
98+
sj := slurmjob.NewReconciler(mgr, *jcUID, *jcGID, opts...)
9599
if err := sj.AddToManager(mgr); err != nil {
96100
glog.Fatalf("Failed to add controller to manager: %v", err)
97101
}

pkg/operator/controller/slurmjob/slurmjob_controller.go

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -36,27 +36,42 @@ import (
3636
)
3737

3838
const (
39-
jobCompanionImage = "cloud.sylabs.io/library/slurm/job-companion:latest"
39+
defaultJobCompanionImage = "cloud.sylabs.io/library/slurm/job-companion:latest"
4040
)
4141

4242
// Reconciler reconciles a SlurmJob object
4343
type Reconciler struct {
4444
// This client, initialized using mgr.Client() above, is a split client
4545
// that reads objects from the cache and writes to the apiserver
46-
client client.Client
47-
scheme *runtime.Scheme
46+
client client.Client
47+
scheme *runtime.Scheme
48+
jcImage string
4849

4950
jcUID int64
5051
jcGID int64
5152
}
5253

54+
type Opt func(*Reconciler)
55+
5356
// NewReconciler returns a new SlurmJob controller.
54-
func NewReconciler(mgr manager.Manager, jcUID, jcGID int64) *Reconciler {
55-
return &Reconciler{
56-
client: mgr.GetClient(),
57-
scheme: mgr.GetScheme(),
58-
jcUID: jcUID,
59-
jcGID: jcGID,
57+
func NewReconciler(mgr manager.Manager, jcUID, jcGID int64, opts ...Opt) *Reconciler {
58+
r := &Reconciler{
59+
client: mgr.GetClient(),
60+
scheme: mgr.GetScheme(),
61+
jcUID: jcUID,
62+
jcGID: jcGID,
63+
jcImage: defaultJobCompanionImage,
64+
}
65+
for _, o := range opts {
66+
o(r)
67+
}
68+
return r
69+
}
70+
71+
// WithCustomJobCompanionImage sets job-companion image that should be used.
72+
func WithCustomJobCompanionImage(image string) Opt {
73+
return func(r *Reconciler) {
74+
r.jcImage = image
6075
}
6176
}
6277

@@ -197,7 +212,7 @@ func (r *Reconciler) newPodForSJ(sj *slurmv1alpha1.SlurmJob) *corev1.Pod {
197212
Containers: []corev1.Container{
198213
{
199214
Name: "jt1",
200-
Image: jobCompanionImage,
215+
Image: r.jcImage,
201216
ImagePullPolicy: corev1.PullIfNotPresent,
202217
Args: args,
203218
Resources: corev1.ResourceRequirements{

0 commit comments

Comments
 (0)