Merge lp:~le-chi-thu/lava-dispatcher/add-deploy-retry into lp:lava-dispatcher

Proposed by Le Chi Thu
Status: Merged
Approved by: Michael Hudson-Doyle
Approved revision: 301
Merged at revision: 300
Proposed branch: lp:~le-chi-thu/lava-dispatcher/add-deploy-retry
Merge into: lp:lava-dispatcher
Diff against target: 72 lines (+34/-5)
2 files modified
doc/changes.rst (+1/-0)
lava_dispatcher/client/master.py (+33/-5)
To merge this branch: bzr merge lp:~le-chi-thu/lava-dispatcher/add-deploy-retry
Reviewer Review Type Date Requested Status
Michael Hudson-Doyle (community) Approve
Review via email: mp+107293@code.launchpad.net

Description of the change

Added retry when deploy image.

To post a comment you must log in.
Revision history for this message
Michael Hudson-Doyle (mwhudson) wrote :

Looks good, thanks for this.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'doc/changes.rst'
--- doc/changes.rst 2012-05-23 21:49:59 +0000
+++ doc/changes.rst 2012-05-24 21:49:18 +0000
@@ -3,6 +3,7 @@
33
4* Fixed reboot issues4* Fixed reboot issues
5* Skip raising exception on the home screen has not displayed for health check jobs5* Skip raising exception on the home screen has not displayed for health check jobs
6* Retry deployment if failed.
67
7.. _version_0_7_1:8.. _version_0_7_1:
89
910
=== modified file 'lava_dispatcher/client/master.py'
--- lava_dispatcher/client/master.py 2012-05-22 13:03:31 +0000
+++ lava_dispatcher/client/master.py 2012-05-24 21:49:18 +0000
@@ -67,16 +67,43 @@
67 if rc:67 if rc:
68 raise RuntimeError("Failed to create tarball: %s" % tarfile)68 raise RuntimeError("Failed to create tarball: %s" % tarfile)
6969
70def _deploy_tarball_to_board(session, tarball_url, dest, timeout=-1):70def _deploy_tarball_to_board(session, tarball_url, dest, timeout=-1, num_retry=2):
71 decompression_char = ''71 decompression_char = ''
72 if tarball_url.endswith('.gz') or tarball_url.endswith('.tgz'):72 if tarball_url.endswith('.gz') or tarball_url.endswith('.tgz'):
73 decompression_char = 'z'73 decompression_char = 'z'
74 elif tarball_url.endswith('.bz2'):74 elif tarball_url.endswith('.bz2'):
75 decompression_char = 'j'75 decompression_char = 'j'
76 session.run(76
77 'wget --no-proxy --connect-timeout=30 -S -O- %s --progress=dot -e dotbytes=2M | tar --numeric-owner -C %s -x%sf -' % (77 deploy_ok=False
78 tarball_url, dest, decompression_char),78
79 timeout=timeout)79 while (num_retry > 0 and not deploy_ok):
80 try:
81 session._empty_pexpect_buffer()
82 session._client.proc.sendline(
83 'wget --no-proxy --connect-timeout=30 -S -O- %s --progress=dot -e dotbytes=2M |'
84 'tar --numeric-owner -C %s -x%sf -'
85 % (tarball_url, dest, decompression_char))
86
87 match_id = session._client.proc.expect(["tar: Error", "unexpected end of file",
88 "tar: Unexpected EOF in archive",session._prompt_str], timeout=timeout)
89 if match_id != 3:
90 logging.warning("Deploy %s failed. %d retry left." %(tarball_url, num_retry-1))
91 else:
92 deploy_ok=True
93 except:
94 logging.warning("Deploy %s failed. %d retry left." %(tarball_url, num_retry-1))
95 # do some delay before retry
96 if (num_retry > 1 and not deploy_ok):
97 sleep_time=5*60
98 logging.info("Wait %d second before retry" % sleep_time)
99 time.sleep(sleep_time)
100 # send CTRL C to exit last command.
101 session._client.proc.sendline("\003")
102 session._client.proc.sendline("echo 'retry left %s'" % num_retry-1)
103 num_retry = num_retry - 1
104
105 if not deploy_ok:
106 raise Exception("Deploy tarball (%s) to board failed" % tarball_url);
80107
81def _deploy_linaro_rootfs(session, rootfs):108def _deploy_linaro_rootfs(session, rootfs):
82 logging.info("Deploying linaro image")109 logging.info("Deploying linaro image")
@@ -754,6 +781,7 @@
754 self.proc.sendline("hardreset")781 self.proc.sendline("hardreset")
755 # after hardreset empty the pexpect buffer782 # after hardreset empty the pexpect buffer
756 self._empty_pexpect_buffer()783 self._empty_pexpect_buffer()
784
757 def _empty_pexpect_buffer(self):785 def _empty_pexpect_buffer(self):
758 """Make sure there is nothing in the pexpect buffer."""786 """Make sure there is nothing in the pexpect buffer."""
759 index = 0787 index = 0

Subscribers

People subscribed via source and target branches