Merge lp:~chipaca/snappy/unsetActiveClick into lp:~snappy-dev/snappy/snappy-moved-to-github

Proposed by John Lenton on 2015-05-29
Status: Merged
Approved by: Sergio Schvezov on 2015-06-09
Approved revision: 487
Merged at revision: 497
Proposed branch: lp:~chipaca/snappy/unsetActiveClick
Merge into: lp:~snappy-dev/snappy/snappy-moved-to-github
Prerequisite: lp:~chipaca/snappy/setActiveClick
Diff against target: 198 lines (+60/-67)
4 files modified
snappy/click.go (+0/-55)
snappy/parts_test.go (+1/-1)
snappy/purge.go (+1/-1)
snappy/snapp.go (+58/-10)
To merge this branch: bzr merge lp:~chipaca/snappy/unsetActiveClick
Reviewer Review Type Date Requested Status
Sergio Schvezov 2015-05-29 Approve on 2015-06-09
Review via email: mp+260570@code.launchpad.net

Commit Message

Make unsetActiveClick a method of SnapPart.

To post a comment you must log in.
Sergio Schvezov (sergiusens) wrote :

looks good, just a teeny itsy bitsy comment

lp:~chipaca/snappy/unsetActiveClick updated on 2015-06-08
484. By John Lenton on 2015-05-29

Merged setActiveClick into unsetActiveClick.

485. By John Lenton on 2015-06-08

Merged setActiveClick into unsetActiveClick.

486. By John Lenton on 2015-06-08

Merged setActiveClick into unsetActiveClick.

487. By John Lenton on 2015-06-08

Merged setActiveClick into unsetActiveClick.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'snappy/click.go'
2--- snappy/click.go 2015-06-08 18:59:15 +0000
3+++ snappy/click.go 2015-06-08 18:59:15 +0000
4@@ -45,7 +45,6 @@
5 "launchpad.net/snappy/helpers"
6 "launchpad.net/snappy/logger"
7 "launchpad.net/snappy/pkg"
8- "launchpad.net/snappy/policy"
9 "launchpad.net/snappy/progress"
10 "launchpad.net/snappy/systemd"
11
12@@ -812,60 +811,6 @@
13 return nil
14 }
15
16-func unsetActiveClick(clickDir string, inhibitHooks bool, inter interacter) error {
17- currentSymlink := filepath.Join(clickDir, "..", "current")
18-
19- // sanity check
20- currentActiveDir, err := filepath.EvalSymlinks(currentSymlink)
21- if err != nil {
22- return err
23- }
24- if clickDir != currentActiveDir {
25- return ErrSnapNotActive
26- }
27-
28- // remove generated services, binaries, clickHooks, security policy
29- if err := removePackageBinaries(clickDir); err != nil {
30- return err
31- }
32-
33- if err := removePackageServices(clickDir, inter); err != nil {
34- return err
35- }
36-
37- m, err := parsePackageYamlFile(filepath.Join(clickDir, "meta", "package.yaml"))
38- if err != nil {
39- return err
40- }
41-
42- if err := m.removeSecurityPolicy(clickDir); err != nil {
43- return err
44- }
45-
46- manifest, err := readClickManifestFromClickDir(clickDir)
47- if err != nil {
48- return err
49- }
50-
51- if manifest.Type == pkg.TypeFramework {
52-
53- if err := policy.Remove(m.Name, clickDir); err != nil {
54- return err
55- }
56- }
57-
58- if err := removeClickHooks(m, originFromBasedir(clickDir), inhibitHooks); err != nil {
59- return err
60- }
61-
62- // and finally the current symlink
63- if err := os.Remove(currentSymlink); err != nil {
64- logger.Noticef("Failed to remove %q: %v", currentSymlink, err)
65- }
66-
67- return nil
68-}
69-
70 // RunHooks will run all click system hooks
71 func RunHooks() error {
72 systemHooks, err := systemClickHooks()
73
74=== modified file 'snappy/parts_test.go'
75--- snappy/parts_test.go 2015-06-08 18:59:15 +0000
76+++ snappy/parts_test.go 2015-06-08 18:59:15 +0000
77@@ -133,7 +133,7 @@
78 c.Assert(part.activate(true, ag), IsNil)
79
80 c.Check(PackageNameActive("hello-app"), Equals, true)
81- c.Assert(unsetActiveClick(pkgdir, true, ag), IsNil)
82+ c.Assert(part.deactivate(true, ag), IsNil)
83 c.Check(PackageNameActive("hello-app"), Equals, false)
84 }
85
86
87=== modified file 'snappy/purge.go'
88--- snappy/purge.go 2015-06-08 18:59:15 +0000
89+++ snappy/purge.go 2015-06-08 18:59:15 +0000
90@@ -65,7 +65,7 @@
91 }
92
93 for i, pkg := range active {
94- err := unsetActiveClick(pkg.basedir, false, meter)
95+ err := pkg.deactivate(false, meter)
96 if err != nil {
97 meter.Notify(fmt.Sprintf("Unable to deactivate %s: %s", pkg.Name(), err))
98 meter.Notify("Purge continues.")
99
100=== modified file 'snappy/snapp.go'
101--- snappy/snapp.go 2015-06-08 18:59:15 +0000
102+++ snappy/snapp.go 2015-06-08 18:59:15 +0000
103@@ -729,7 +729,7 @@
104 // otherwise just create a empty data dir
105 if oldPart != nil {
106 // we need to stop making it active
107- err = unsetActiveClick(oldPart.basedir, inhibitHooks, inter)
108+ err = oldPart.deactivate(inhibitHooks, inter)
109 defer func() {
110 if err != nil {
111 if cerr := oldPart.activate(inhibitHooks, inter); cerr != nil {
112@@ -847,7 +847,15 @@
113
114 // there is already an active part
115 if currentActiveDir != "" {
116- unsetActiveClick(currentActiveDir, inhibitHooks, inter)
117+ // TODO: support switching origins
118+ oldYaml := filepath.Join(currentActiveDir, "meta", "package.yaml")
119+ oldPart, err := NewInstalledSnapPart(oldYaml, s.origin)
120+ if err != nil {
121+ return err
122+ }
123+ if err := oldPart.deactivate(inhibitHooks, inter); err != nil {
124+ return err
125+ }
126 }
127
128 if s.Type() == pkg.TypeFramework {
129@@ -884,6 +892,52 @@
130 return os.Symlink(filepath.Base(s.basedir), currentActiveSymlink)
131 }
132
133+func (s *SnapPart) deactivate(inhibitHooks bool, inter interacter) error {
134+ currentSymlink := filepath.Join(s.basedir, "..", "current")
135+
136+ // sanity check
137+ currentActiveDir, err := filepath.EvalSymlinks(currentSymlink)
138+ if err != nil {
139+ if os.IsNotExist(err) {
140+ return ErrSnapNotActive
141+ }
142+ return err
143+ }
144+ if s.basedir != currentActiveDir {
145+ return ErrSnapNotActive
146+ }
147+
148+ // remove generated services, binaries, clickHooks, security policy
149+ if err := removePackageBinaries(s.basedir); err != nil {
150+ return err
151+ }
152+
153+ if err := removePackageServices(s.basedir, inter); err != nil {
154+ return err
155+ }
156+
157+ if err := s.m.removeSecurityPolicy(s.basedir); err != nil {
158+ return err
159+ }
160+
161+ if s.Type() == pkg.TypeFramework {
162+ if err := policy.Remove(s.Name(), s.basedir); err != nil {
163+ return err
164+ }
165+ }
166+
167+ if err := removeClickHooks(s.m, s.origin, inhibitHooks); err != nil {
168+ return err
169+ }
170+
171+ // and finally the current symlink
172+ if err := os.Remove(currentSymlink); err != nil {
173+ logger.Noticef("Failed to remove %q: %v", currentSymlink, err)
174+ }
175+
176+ return nil
177+}
178+
179 // Uninstall remove the snap from the system
180 func (s *SnapPart) Uninstall(pb progress.Meter) (err error) {
181 // OEM snaps should not be removed as they are a key
182@@ -920,14 +974,8 @@
183 return err
184 }
185
186- // remove "current" symlink if it points to this SnapPart
187- // (i.e. if this was the active version).
188- currentSymlink := filepath.Join(filepath.Dir(s.basedir), "current")
189- p, _ := filepath.EvalSymlinks(currentSymlink)
190- if s.basedir == p {
191- if err := unsetActiveClick(p, false, inter); err != nil {
192- return err
193- }
194+ if err := s.deactivate(false, inter); err != nil && err != ErrSnapNotActive {
195+ return err
196 }
197
198 err = os.RemoveAll(s.basedir)

Subscribers

People subscribed via source and target branches