Tristan Van Berkom pushed to branch tristan/notifications at BuildStream / buildstream
Commits:
-
c0431f15
by Valentin David at 2018-08-16T07:43:07Z
-
04f83679
by Tristan Van Berkom at 2018-08-16T08:54:27Z
-
72c60cf7
by Tristan Van Berkom at 2018-08-16T08:57:00Z
3 changed files:
Changes:
| ... | ... | @@ -269,6 +269,9 @@ class App(): |
| 269 | 269 |
else:
|
| 270 | 270 |
self._message(MessageType.FAIL, session_name, elapsed=elapsed)
|
| 271 | 271 |
|
| 272 |
+ # Notify session failure
|
|
| 273 |
+ self._notify("{} failed".format(session_name), "{}".format(e))
|
|
| 274 |
+ |
|
| 272 | 275 |
if self._started:
|
| 273 | 276 |
self._print_summary()
|
| 274 | 277 |
|
| ... | ... | @@ -286,6 +289,9 @@ class App(): |
| 286 | 289 |
if self._started:
|
| 287 | 290 |
self._print_summary()
|
| 288 | 291 |
|
| 292 |
+ # Notify session success
|
|
| 293 |
+ self._notify("{} succeeded".format(session_name), "")
|
|
| 294 |
+ |
|
| 289 | 295 |
# init_project()
|
| 290 | 296 |
#
|
| 291 | 297 |
# Initialize a new BuildStream project, either with the explicitly passed options,
|
| ... | ... | @@ -419,6 +425,12 @@ class App(): |
| 419 | 425 |
# Local Functions #
|
| 420 | 426 |
############################################################
|
| 421 | 427 |
|
| 428 |
+ # Local function for calling the notify() virtual method
|
|
| 429 |
+ #
|
|
| 430 |
+ def _notify(self, title, text):
|
|
| 431 |
+ if self.interactive:
|
|
| 432 |
+ self.notify(title, text)
|
|
| 433 |
+ |
|
| 422 | 434 |
# Local message propagator
|
| 423 | 435 |
#
|
| 424 | 436 |
def _message(self, message_type, message, **kwargs):
|
| ... | ... | @@ -571,8 +583,8 @@ class App(): |
| 571 | 583 |
while choice not in ['continue', 'quit', 'terminate', 'retry']:
|
| 572 | 584 |
click.echo(summary, err=True)
|
| 573 | 585 |
|
| 574 |
- self.notify("BuildStream failure", "{} on element {}"
|
|
| 575 |
- .format(failure.action_name, element.name))
|
|
| 586 |
+ self._notify("BuildStream failure", "{} on element {}"
|
|
| 587 |
+ .format(failure.action_name, element.name))
|
|
| 576 | 588 |
|
| 577 | 589 |
try:
|
| 578 | 590 |
choice = click.prompt("Choice:", default='continue', err=True,
|
| ... | ... | @@ -71,7 +71,7 @@ class OSTreeSource(Source): |
| 71 | 71 |
self.ref = self.node_get_member(node, str, 'ref', None)
|
| 72 | 72 |
self.tracking = self.node_get_member(node, str, 'track', None)
|
| 73 | 73 |
self.mirror = os.path.join(self.get_mirror_directory(),
|
| 74 |
- utils.url_directory_name(self.url))
|
|
| 74 |
+ utils.url_directory_name(self.original_url))
|
|
| 75 | 75 |
|
| 76 | 76 |
# (optional) Not all repos are signed. But if they are, get the gpg key
|
| 77 | 77 |
self.gpg_key_path = None
|
| ... | ... | @@ -104,10 +104,11 @@ class OSTreeSource(Source): |
| 104 | 104 |
return None
|
| 105 | 105 |
|
| 106 | 106 |
self.ensure()
|
| 107 |
+ remote_name = self.ensure_remote(self.url)
|
|
| 107 | 108 |
with self.timed_activity("Fetching tracking ref '{}' from origin: {}"
|
| 108 | 109 |
.format(self.tracking, self.url)):
|
| 109 | 110 |
try:
|
| 110 |
- _ostree.fetch(self.repo, ref=self.tracking, progress=self.progress)
|
|
| 111 |
+ _ostree.fetch(self.repo, remote=remote_name, ref=self.tracking, progress=self.progress)
|
|
| 111 | 112 |
except OSTreeError as e:
|
| 112 | 113 |
raise SourceError("{}: Failed to fetch tracking ref '{}' from origin {}\n\n{}"
|
| 113 | 114 |
.format(self, self.tracking, self.url, e)) from e
|
| ... | ... | @@ -116,11 +117,12 @@ class OSTreeSource(Source): |
| 116 | 117 |
|
| 117 | 118 |
def fetch(self):
|
| 118 | 119 |
self.ensure()
|
| 120 |
+ remote_name = self.ensure_remote(self.url)
|
|
| 119 | 121 |
if not _ostree.exists(self.repo, self.ref):
|
| 120 | 122 |
with self.timed_activity("Fetching remote ref: {} from origin: {}"
|
| 121 | 123 |
.format(self.ref, self.url)):
|
| 122 | 124 |
try:
|
| 123 |
- _ostree.fetch(self.repo, ref=self.ref, progress=self.progress)
|
|
| 125 |
+ _ostree.fetch(self.repo, remote=remote_name, ref=self.ref, progress=self.progress)
|
|
| 124 | 126 |
except OSTreeError as e:
|
| 125 | 127 |
raise SourceError("{}: Failed to fetch ref '{}' from origin: {}\n\n{}"
|
| 126 | 128 |
.format(self, self.ref, self.url, e)) from e
|
| ... | ... | @@ -171,14 +173,22 @@ class OSTreeSource(Source): |
| 171 | 173 |
self.status("Creating local mirror for {}".format(self.url))
|
| 172 | 174 |
|
| 173 | 175 |
self.repo = _ostree.ensure(self.mirror, True)
|
| 174 |
- gpg_key = None
|
|
| 175 |
- if self.gpg_key_path:
|
|
| 176 |
- gpg_key = 'file://' + self.gpg_key_path
|
|
| 177 | 176 |
|
| 178 |
- try:
|
|
| 179 |
- _ostree.configure_remote(self.repo, "origin", self.url, key_url=gpg_key)
|
|
| 180 |
- except OSTreeError as e:
|
|
| 181 |
- raise SourceError("{}: Failed to configure origin {}\n\n{}".format(self, self.url, e)) from e
|
|
| 177 |
+ def ensure_remote(self, url):
|
|
| 178 |
+ if self.original_url == self.url:
|
|
| 179 |
+ remote_name = 'origin'
|
|
| 180 |
+ else:
|
|
| 181 |
+ remote_name = utils.url_directory_name(url)
|
|
| 182 |
+ |
|
| 183 |
+ gpg_key = None
|
|
| 184 |
+ if self.gpg_key_path:
|
|
| 185 |
+ gpg_key = 'file://' + self.gpg_key_path
|
|
| 186 |
+ |
|
| 187 |
+ try:
|
|
| 188 |
+ _ostree.configure_remote(self.repo, remote_name, url, key_url=gpg_key)
|
|
| 189 |
+ except OSTreeError as e:
|
|
| 190 |
+ raise SourceError("{}: Failed to configure origin {}\n\n{}".format(self, self.url, e)) from e
|
|
| 191 |
+ return remote_name
|
|
| 182 | 192 |
|
| 183 | 193 |
def progress(self, percent, message):
|
| 184 | 194 |
self.status(message)
|
| ... | ... | @@ -466,10 +466,6 @@ def test_mirror_track_upstream_absent(cli, tmpdir, datafiles, kind): |
| 466 | 466 |
@pytest.mark.datafiles(DATA_DIR)
|
| 467 | 467 |
@pytest.mark.parametrize("kind", [(kind) for kind in ALL_REPO_KINDS])
|
| 468 | 468 |
def test_mirror_from_includes(cli, tmpdir, datafiles, kind):
|
| 469 |
- if kind == 'ostree':
|
|
| 470 |
- # FIXME: Mirroring fallback fails with ostree
|
|
| 471 |
- pytest.skip("Bug #538 - ostree mirror fallback breaks assertion")
|
|
| 472 |
- |
|
| 473 | 469 |
bin_files_path = os.path.join(str(datafiles), 'files', 'bin-files', 'usr')
|
| 474 | 470 |
upstream_repodir = os.path.join(str(tmpdir), 'upstream')
|
| 475 | 471 |
mirror_repodir = os.path.join(str(tmpdir), 'mirror')
|
