Skip to content
This repository was archived by the owner on Jan 9, 2023. It is now read-only.

Commit 98d321f

Browse files
committed
Converge machines
1 parent 85a3446 commit 98d321f

File tree

4 files changed

+85
-84
lines changed

4 files changed

+85
-84
lines changed

pkg/wing/convergemachine.go

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
package wing
2+
3+
import (
4+
"fmt"
5+
6+
"github.com/jetstack/tarmak/pkg/apis/wing/v1alpha1"
7+
apierrors "k8s.io/apimachinery/pkg/api/errors"
8+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
9+
)
10+
11+
func (w *Wing) convergeMachine() error {
12+
machineAPI := w.clientset.WingV1alpha1().Machines(w.flags.ClusterName)
13+
machine, err := machineAPI.Get(
14+
w.flags.InstanceName,
15+
metav1.GetOptions{},
16+
)
17+
if err != nil {
18+
if kerr, ok := err.(*apierrors.StatusError); ok && kerr.ErrStatus.Reason == metav1.StatusReasonNotFound {
19+
machine = &v1alpha1.Machine{
20+
ObjectMeta: metav1.ObjectMeta{
21+
Name: w.flags.InstanceName,
22+
},
23+
Status: v1alpha1.MachineStatus{
24+
Converged: false,
25+
},
26+
}
27+
_, err := machineAPI.Create(machine)
28+
if err != nil {
29+
return fmt.Errorf("error creating machine: %s", err)
30+
}
31+
return nil
32+
}
33+
return fmt.Errorf("error get existing machine: %s", err)
34+
}
35+
36+
if machine.Status.Converged {
37+
w.log.Infof("Machine already converged: %s", machine.Name)
38+
return nil
39+
}
40+
41+
puppetTarget := machine.Spec.PuppetTargetRef
42+
if puppetTarget == "" {
43+
w.log.Warn("no puppet target for machine: ", machine.Name)
44+
return nil
45+
}
46+
47+
// FIXME: this shouldn't be done on the wing agent
48+
jobName := fmt.Sprintf("%s-%s", w.flags.InstanceName, puppetTarget)
49+
jobsAPI := w.clientset.WingV1alpha1().WingJobs(w.flags.ClusterName)
50+
job, err := jobsAPI.Get(
51+
jobName,
52+
metav1.GetOptions{},
53+
)
54+
if err != nil {
55+
if kerr, ok := err.(*apierrors.StatusError); ok && kerr.ErrStatus.Reason == metav1.StatusReasonNotFound {
56+
job = &v1alpha1.WingJob{
57+
ObjectMeta: metav1.ObjectMeta{
58+
Name: jobName,
59+
},
60+
Spec: &v1alpha1.WingJobSpec{
61+
InstanceName: machine.Name,
62+
PuppetTargetRef: puppetTarget,
63+
Operation: "apply",
64+
RequestTimestamp: metav1.Now(),
65+
},
66+
Status: &v1alpha1.WingJobStatus{},
67+
}
68+
_, err := jobsAPI.Create(job)
69+
if err != nil {
70+
return fmt.Errorf("error creating WingJob: %s", err)
71+
}
72+
return nil
73+
}
74+
return fmt.Errorf("error get existing WingJob: %s", err)
75+
}
76+
77+
machineCopy := machine.DeepCopy()
78+
machineCopy.Status.Converged = true
79+
_, err = machineAPI.Update(machineCopy)
80+
if err != nil {
81+
return err
82+
}
83+
84+
return nil
85+
}

pkg/wing/instancecontroller.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,6 @@ func (c *MachineController) processNextItem() bool {
5151
}
5252

5353
func (c *MachineController) syncMachine(key string) error {
54-
55-
// ensure only one converge at a time
56-
c.wing.convergeWG.Wait()
57-
5854
obj, exists, err := c.indexer.GetByKey(key)
5955
if err != nil {
6056
c.log.Errorf("Fetching object with key %s from store failed with %v", key, err)

pkg/wing/puppet.go

Lines changed: 0 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import (
1919
"github.com/cenkalti/backoff"
2020
"github.com/docker/docker/pkg/archive"
2121
"golang.org/x/net/context"
22-
apierrors "k8s.io/apimachinery/pkg/api/errors"
2322
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2423

2524
"github.com/jetstack/tarmak/pkg/apis/wing/v1alpha1"
@@ -143,82 +142,6 @@ func (w *Wing) runPuppet(job *v1alpha1.WingJob) error {
143142
return nil
144143
}
145144

146-
func (w *Wing) convergeMachine() error {
147-
machineAPI := w.clientset.WingV1alpha1().Machines(w.flags.ClusterName)
148-
machine, err := machineAPI.Get(
149-
w.flags.InstanceName,
150-
metav1.GetOptions{},
151-
)
152-
if err != nil {
153-
if kerr, ok := err.(*apierrors.StatusError); ok && kerr.ErrStatus.Reason == metav1.StatusReasonNotFound {
154-
machine = &v1alpha1.Machine{
155-
ObjectMeta: metav1.ObjectMeta{
156-
Name: w.flags.InstanceName,
157-
},
158-
Status: v1alpha1.MachineStatus{
159-
Converged: false,
160-
},
161-
}
162-
_, err := machineAPI.Create(machine)
163-
if err != nil {
164-
return fmt.Errorf("error creating machine: %s", err)
165-
}
166-
return nil
167-
}
168-
return fmt.Errorf("error get existing machine: %s", err)
169-
}
170-
171-
if machine.Status.Converged {
172-
w.log.Infof("Machine already converged: ", machine.Name)
173-
return nil
174-
}
175-
176-
puppetTarget := machine.Spec.PuppetTargetRef
177-
if puppetTarget == "" {
178-
w.log.Warn("no puppet target for machine: ", machine.Name)
179-
return nil
180-
}
181-
182-
// FIXME: this shouldn't be done on the wing agent
183-
jobName := fmt.Sprintf("%s-%s", w.flags.InstanceName, puppetTarget)
184-
jobsAPI := w.clientset.WingV1alpha1().WingJobs(w.flags.ClusterName)
185-
job, err := jobsAPI.Get(
186-
jobName,
187-
metav1.GetOptions{},
188-
)
189-
if err != nil {
190-
if kerr, ok := err.(*apierrors.StatusError); ok && kerr.ErrStatus.Reason == metav1.StatusReasonNotFound {
191-
job = &v1alpha1.WingJob{
192-
ObjectMeta: metav1.ObjectMeta{
193-
Name: jobName,
194-
},
195-
Spec: &v1alpha1.WingJobSpec{
196-
InstanceName: machine.Name,
197-
PuppetTargetRef: puppetTarget,
198-
Operation: "apply",
199-
RequestTimestamp: metav1.Now(),
200-
},
201-
Status: &v1alpha1.WingJobStatus{},
202-
}
203-
_, err := jobsAPI.Create(job)
204-
if err != nil {
205-
return fmt.Errorf("error creating WingJob: %s", err)
206-
}
207-
return nil
208-
}
209-
return fmt.Errorf("error get existing WingJob: %s", err)
210-
}
211-
212-
machineCopy := machine.DeepCopy()
213-
machineCopy.Status.Converged = true
214-
_, err = machineAPI.Update(machineCopy)
215-
if err != nil {
216-
return err
217-
}
218-
219-
return nil
220-
}
221-
222145
func (w *Wing) converge(job *v1alpha1.WingJob) {
223146
w.convergeWG.Add(1)
224147
defer w.convergeWG.Done()

pkg/wing/wing.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,6 @@ func (w *Wing) Run(args []string) error {
8888
signal.Notify(signalCh, syscall.SIGTERM, syscall.SIGINT, syscall.SIGHUP)
8989
w.signalHandler(signalCh)
9090

91-
// run converge on instance after first start
92-
go w.convergeMachine()
93-
9491
// start watching for API server events that trigger applies
9592
w.watchForNotifications()
9693

0 commit comments

Comments
 (0)