@@ -15,38 +15,33 @@ import (
1515)
1616
1717// Initialize the boot2docker VM from scratch.
18- func cmdInit () int {
18+ func cmdInit () error {
1919 B2D .Init = true
2020 _ , err := driver .GetMachine (& B2D )
2121 if err != nil {
22- logf ("Failed to initialize machine %q: %s" , B2D .VM , err )
23- return 1
22+ return fmt .Errorf ("Failed to initialize machine %q: %s" , B2D .VM , err )
2423 }
25- return 0
24+ return nil
2625}
2726
2827// Bring up the VM from all possible states.
29- func cmdUp () int {
28+ func cmdUp () error {
3029 m , err := driver .GetMachine (& B2D )
3130 if err != nil {
32- logf ("Failed to get machine %q: %s" , B2D .VM , err )
33- return 2
31+ return fmt .Errorf ("Failed to get machine %q: %s" , B2D .VM , err )
3432 }
3533 if err := m .Start (); err != nil {
36- logf ("Failed to start machine %q: %s" , B2D .VM , err )
37- return 1
34+ return fmt .Errorf ("Failed to start machine %q: %s" , B2D .VM , err )
3835 }
3936
4037 if err := m .Refresh (); err != nil {
41- logf ("Failed to start machine %q: %s" , B2D .VM , err )
42- return 1
38+ return fmt .Errorf ("Failed to start machine %q: %s" , B2D .VM , err )
4339 }
4440 if m .GetState () != driver .Running {
45- logf ("Failed to start machine %q (run again with -v for details)" , B2D .VM )
46- return 1
41+ return fmt .Errorf ("Failed to start machine %q (run again with -v for details)" , B2D .VM )
4742 }
4843
49- logf ("Waiting for VM to be started..." )
44+ fmt . Printf ("Waiting for VM to be started..." )
5045 //give the VM a little time to start, so we don't kill the Serial Pipe/Socket
5146 time .Sleep (600 * time .Millisecond )
5247 natSSH := fmt .Sprintf ("localhost:%d" , m .GetSSHPort ())
@@ -66,190 +61,171 @@ func cmdUp() int {
6661 }
6762 print ("\n " )
6863
69- logf ("Started." )
64+ fmt . Printf ("Started." )
7065
7166 if IP == "" {
7267 // lets try one more time
7368 time .Sleep (600 * time .Millisecond )
74- logf (" Trying to get IP one more time" )
69+ fmt . Printf (" Trying to get IP one more time" )
7570
7671 IP = RequestIPFromSSH (m )
7772 }
7873 switch runtime .GOOS {
7974 case "windows" :
80- logf ("Docker client does not run on Windows for now. Please use" )
81- logf (" \" %s\" ssh" , os .Args [0 ])
82- logf ("to SSH into the VM instead." )
75+ fmt . Printf ("Docker client does not run on Windows for now. Please use" )
76+ fmt . Printf (" \" %s\" ssh" , os .Args [0 ])
77+ fmt . Printf ("to SSH into the VM instead." )
8378 default :
8479 if IP == "" {
85- logf ( "Auto detection of the VM's IP address failed." )
86- logf ( "Please run `boot2docker -v up` to diagnose." )
80+ fmt . Fprintf ( os . Stderr , "Auto detection of the VM's IP address failed." )
81+ fmt . Fprintf ( os . Stderr , "Please run `boot2docker -v up` to diagnose." )
8782 } else {
8883 // Check if $DOCKER_HOST ENV var is properly configured.
8984 if os .Getenv ("DOCKER_HOST" ) != fmt .Sprintf ("tcp://%s:%d" , IP , driver .DockerPort ) {
90- logf ("To connect the Docker client to the Docker daemon, please set:" )
91- logf (" export DOCKER_HOST=tcp://%s:%d" , IP , driver .DockerPort )
85+ fmt . Printf ("To connect the Docker client to the Docker daemon, please set:" )
86+ fmt . Printf (" export DOCKER_HOST=tcp://%s:%d" , IP , driver .DockerPort )
9287 } else {
93- logf ("Your DOCKER_HOST env variable is already set correctly." )
88+ fmt . Printf ("Your DOCKER_HOST env variable is already set correctly." )
9489 }
9590 }
9691 }
97- return 0
92+ return nil
9893}
9994
10095// Tell the user the config (and later let them set it?)
101- func cmdConfig () int {
96+ func cmdConfig () error {
10297 dir , err := getCfgDir (".boot2docker" )
10398 if err != nil {
104- logf ("Error working out Profile file location: %s" , err )
105- return 1
99+ return fmt .Errorf ("Error working out Profile file location: %s" , err )
106100 }
107101 filename := getCfgFilename (dir )
108- logf ("boot2docker profile filename: %s" , filename )
102+ fmt . Printf ("boot2docker profile filename: %s" , filename )
109103 fmt .Println (printConfig ())
110- return 0
104+ return nil
111105}
112106
113107// Suspend and save the current state of VM on disk.
114- func cmdSave () int {
108+ func cmdSave () error {
115109 m , err := driver .GetMachine (& B2D )
116110 if err != nil {
117- logf ("Failed to get machine %q: %s" , B2D .VM , err )
118- return 2
111+ return fmt .Errorf ("Failed to get machine %q: %s" , B2D .VM , err )
119112 }
120113 if err := m .Save (); err != nil {
121- logf ("Failed to save machine %q: %s" , B2D .VM , err )
122- return 1
114+ return fmt .Errorf ("Failed to save machine %q: %s" , B2D .VM , err )
123115 }
124- return 0
116+ return nil
125117}
126118
127119// Gracefully stop the VM by sending ACPI shutdown signal.
128- func cmdStop () int {
120+ func cmdStop () error {
129121 m , err := driver .GetMachine (& B2D )
130122 if err != nil {
131- logf ("Failed to get machine %q: %s" , B2D .VM , err )
132- return 2
123+ return fmt .Errorf ("Failed to get machine %q: %s" , B2D .VM , err )
133124 }
134125 if err := m .Stop (); err != nil {
135- logf ("Failed to stop machine %q: %s" , B2D .VM , err )
136- return 1
126+ return fmt .Errorf ("Failed to stop machine %q: %s" , B2D .VM , err )
137127 }
138- return 0
128+ return nil
139129}
140130
141131// Forcefully power off the VM (equivalent to unplug power). Might corrupt disk
142132// image.
143- func cmdPoweroff () int {
133+ func cmdPoweroff () error {
144134 m , err := driver .GetMachine (& B2D )
145135 if err != nil {
146- logf ("Failed to get machine %q: %s" , B2D .VM , err )
147- return 2
136+ return fmt .Errorf ("Failed to get machine %q: %s" , B2D .VM , err )
148137 }
149138 if err := m .Poweroff (); err != nil {
150- logf ("Failed to poweroff machine %q: %s" , B2D .VM , err )
151- return 1
139+ return fmt .Errorf ("Failed to poweroff machine %q: %s" , B2D .VM , err )
152140 }
153- return 0
141+ return nil
154142}
155143
156144// Upgrade the boot2docker ISO - preserving server state
157- func cmdUpgrade () int {
145+ func cmdUpgrade () error {
158146 m , err := driver .GetMachine (& B2D )
159147 if err == nil && m .GetState () == driver .Running {
160148 // Windows won't let us move the ISO aside while it's in use
161- if cmdStop () == 0 && cmdDownload () == 0 {
149+ if cmdStop () == nil && cmdDownload () == nil {
162150 return cmdUp ()
163151 } else {
164- return 0
152+ return nil
165153 }
166154 } else {
167155 return cmdDownload ()
168156 }
169157}
170158
171159// Gracefully stop and then start the VM.
172- func cmdRestart () int {
160+ func cmdRestart () error {
173161 m , err := driver .GetMachine (& B2D )
174162 if err != nil {
175- logf ("Failed to get machine %q: %s" , B2D .VM , err )
176- return 2
163+ return fmt .Errorf ("Failed to get machine %q: %s" , B2D .VM , err )
177164 }
178165 if err := m .Restart (); err != nil {
179- logf ("Failed to restart machine %q: %s" , B2D .VM , err )
180- return 1
166+ return fmt .Errorf ("Failed to restart machine %q: %s" , B2D .VM , err )
181167 }
182- return 0
168+ return nil
183169}
184170
185171// Forcefully reset (equivalent to cold boot) the VM. Might corrupt disk image.
186- func cmdReset () int {
172+ func cmdReset () error {
187173 m , err := driver .GetMachine (& B2D )
188174 if err != nil {
189- logf ("Failed to get machine %q: %s" , B2D .VM , err )
190- return 2
175+ return fmt .Errorf ("Failed to get machine %q: %s" , B2D .VM , err )
191176 }
192177 if err := m .Reset (); err != nil {
193- logf ("Failed to reset machine %q: %s" , B2D .VM , err )
194- return 1
178+ return fmt .Errorf ("Failed to reset machine %q: %s" , B2D .VM , err )
195179 }
196- return 0
180+ return nil
197181}
198182
199183// Delete the VM and associated disk image.
200- func cmdDelete () int {
184+ func cmdDelete () error {
201185 m , err := driver .GetMachine (& B2D )
202186 if err != nil {
203187 if err == driver .ErrMachineNotExist {
204- logf ("Machine %q does not exist." , B2D .VM )
205- return 0
188+ return fmt .Errorf ("Machine %q does not exist." , B2D .VM )
206189 }
207- logf ("Failed to get machine %q: %s" , B2D .VM , err )
208- return 2
190+ return fmt .Errorf ("Failed to get machine %q: %s" , B2D .VM , err )
209191 }
210192 if err := m .Delete (); err != nil {
211- logf ("Failed to delete machine %q: %s" , B2D .VM , err )
212- return 1
193+ return fmt .Errorf ("Failed to delete machine %q: %s" , B2D .VM , err )
213194 }
214- return 0
195+ return nil
215196}
216197
217198// Show detailed info of the VM.
218- func cmdInfo () int {
199+ func cmdInfo () error {
219200 m , err := driver .GetMachine (& B2D )
220201 if err != nil {
221- logf ("Failed to get machine %q: %s" , B2D .VM , err )
222- return 2
202+ return fmt .Errorf ("Failed to get machine %q: %s" , B2D .VM , err )
223203 }
224204 if err := json .NewEncoder (os .Stdout ).Encode (m ); err != nil {
225- logf ("Failed to encode machine %q info: %s" , B2D .VM , err )
226- return 1
205+ return fmt .Errorf ("Failed to encode machine %q info: %s" , B2D .VM , err )
227206 }
228- return 0
207+ return nil
229208}
230209
231210// Show the current state of the VM.
232- func cmdStatus () int {
211+ func cmdStatus () error {
233212 m , err := driver .GetMachine (& B2D )
234213 if err != nil {
235- logf ("Failed to get machine %q: %s" , B2D .VM , err )
236- return 2
214+ return fmt .Errorf ("Failed to get machine %q: %s" , B2D .VM , err )
237215 }
238216 fmt .Println (m .GetState ())
239- return 0
217+ return nil
240218}
241219
242220// Call the external SSH command to login into boot2docker VM.
243- func cmdSSH () int {
221+ func cmdSSH () error {
244222 m , err := driver .GetMachine (& B2D )
245223 if err != nil {
246- logf ("Failed to get machine %q: %s" , B2D .VM , err )
247- return 2
224+ return fmt .Errorf ("Failed to get machine %q: %s" , B2D .VM , err )
248225 }
249226
250227 if m .GetState () != driver .Running {
251- logf ("VM %q is not running." , B2D .VM )
252- return 1
228+ return fmt .Errorf ("VM %q is not running." , B2D .VM )
253229 }
254230
255231 // find the ssh cmd string and then pass any remaining strings to ssh
@@ -271,22 +247,19 @@ func cmdSSH() int {
271247 }, os .Args [i :]... )
272248
273249 if err := cmdInteractive (B2D .SSH , sshArgs ... ); err != nil {
274- logf ("%s" , err )
275- return 1
250+ return fmt .Errorf ("%s" , err )
276251 }
277- return 0
252+ return nil
278253}
279254
280- func cmdIP () int {
255+ func cmdIP () error {
281256 m , err := driver .GetMachine (& B2D )
282257 if err != nil {
283- logf ("Failed to get machine %q: %s" , B2D .VM , err )
284- return 2
258+ return fmt .Errorf ("Failed to get machine %q: %s" , B2D .VM , err )
285259 }
286260
287261 if m .GetState () != driver .Running {
288- logf ("VM %q is not running." , B2D .VM )
289- return 1
262+ return fmt .Errorf ("VM %q is not running." , B2D .VM )
290263 }
291264
292265 IP := ""
@@ -311,7 +284,7 @@ func cmdIP() int {
311284 fmt .Fprintf (os .Stderr , "\n Failed to get VM Host only IP address.\n " )
312285 fmt .Fprintf (os .Stderr , "\t Was the VM initilized using boot2docker?\n " )
313286 }
314- return 0
287+ return nil
315288}
316289
317290func RequestIPFromSSH (m driver.Machine ) string {
@@ -328,10 +301,10 @@ func RequestIPFromSSH(m driver.Machine) string {
328301 )
329302 IP := ""
330303 if err != nil {
331- logf ( "%s " , err )
304+ fmt . Fprintf ( os . Stderr , "request ip from ssh error: %v " , err )
332305 } else {
333306 if B2D .Verbose {
334- logf ("SSH returned: %s\n END SSH\n " , out )
307+ fmt . Printf ("SSH returned: %s\n END SSH\n " , out )
335308 }
336309 // parse to find: inet 192.168.59.103/24 brd 192.168.59.255 scope global eth1
337310 lines := strings .Split (out , "\n " )
@@ -347,21 +320,19 @@ func RequestIPFromSSH(m driver.Machine) string {
347320}
348321
349322// Download the boot2docker ISO image.
350- func cmdDownload () int {
351- logf ("Downloading boot2docker ISO image..." )
323+ func cmdDownload () error {
324+ fmt . Printf ("Downloading boot2docker ISO image..." )
352325 url := "https://api.github.com/repos/boot2docker/boot2docker/releases"
353326 tag , err := getLatestReleaseName (url )
354327 if err != nil {
355- logf ("Failed to get latest release: %s" , err )
356- return 1
328+ return fmt .Errorf ("Failed to get latest release: %s" , err )
357329 }
358- logf ("Latest release is %s" , tag )
330+ fmt . Printf ("Latest release is %s" , tag )
359331
360332 url = fmt .Sprintf ("https://github.com/boot2docker/boot2docker/releases/download/%s/boot2docker.iso" , tag )
361333 if err := download (B2D .ISO , url ); err != nil {
362- logf ("Failed to download ISO image: %s" , err )
363- return 1
334+ return fmt .Errorf ("Failed to download ISO image: %s" , err )
364335 }
365- logf ("Success: downloaded %s\n \t to %s" , url , B2D .ISO )
366- return 0
336+ fmt . Printf ("Success: downloaded %s\n \t to %s" , url , B2D .ISO )
337+ return nil
367338}
0 commit comments