MCPcopy Create free account
hub / github.com/flant/shell-operator / ChangeState

Method ChangeState

test/hook/context/state.go:58–103  ·  view source on GitHub ↗

ChangeState apply changes to current objects state

(newRawState string)

Source from the content-addressed store, hash-verified

56
57// ChangeState apply changes to current objects state
58func (c *StateController) ChangeState(newRawState string) error {
59 newManifests, err := manifest.ListFromYamlDocs(newRawState)
60 if err != nil {
61 return fmt.Errorf("error while changing state: %v", err)
62 }
63
64 newState := make(map[string]manifest.Manifest)
65
66 // Create new objects in FakeCluster
67 for _, m := range newManifests {
68 // save manifest to new State
69 newState[m.Id()] = m
70
71 currM, ok := c.CurrentState[m.Id()]
72 if !ok {
73 // Create object if not exist
74 if err := c.fakeCluster.Create(m.Namespace(defaultNamespace), m); err != nil {
75 return err
76 }
77 c.CurrentState[m.Id()] = m
78 } else if !reflect.DeepEqual(currM, m) {
79 // Update object
80 if err := c.fakeCluster.Update(m.Namespace(defaultNamespace), m); err != nil {
81 return err
82 }
83 c.CurrentState[m.Id()] = m
84 }
85 }
86 // Remove obsolete objects
87 for currID, currM := range c.CurrentState {
88 if _, ok := newState[currID]; !ok {
89 // Delete object
90 if err := c.fakeCluster.Delete(currM.Namespace(defaultNamespace), currM); err != nil {
91 return err
92 }
93 delete(c.CurrentState, currID)
94 }
95 }
96
97 go func() {
98 time.Sleep(100 * time.Millisecond)
99 c.stopCh <- types.KubeEvent{MonitorId: "STOP_EVENTS"}
100 }()
101
102 return nil
103}

Callers

nothing calls this directly

Calls 3

CreateMethod · 0.80
UpdateMethod · 0.80
DeleteMethod · 0.45

Tested by

no test coverage detected