From 57cc6ceca63d56fd529eca68b16c061e9d36b6ca Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 26 Oct 2009 14:30:42 +0000 Subject: [PATCH] * UI for cloning builds (not functional yet). --- src/lib/Hydra/Controller/Build.pm | 24 ++++++++++++++++ src/lib/Hydra/Controller/Root.pm | 1 + src/root/build.tt | 4 ++- src/root/clone-build.tt | 48 +++++++++++++++++++++++++++++++ src/root/project.tt | 2 +- src/root/queue.tt | 4 +++ 6 files changed, 81 insertions(+), 2 deletions(-) create mode 100644 src/root/clone-build.tt diff --git a/src/lib/Hydra/Controller/Build.pm b/src/lib/Hydra/Controller/Build.pm index fc07be6f..e72a7a70 100644 --- a/src/lib/Hydra/Controller/Build.pm +++ b/src/lib/Hydra/Controller/Build.pm @@ -385,4 +385,28 @@ sub add_to_release : Chained('build') PathPart('add-to-release') Args(0) { } +sub clone : Chained('build') PathPart('clone') Args(0) { + my ($self, $c) = @_; + + my $build = $c->stash->{build}; + + requireProjectOwner($c, $build->project); + + $c->stash->{template} = 'clone-build.tt'; +} + + +sub clone_submit : Chained('build') PathPart('clone/submit') Args(0) { + my ($self, $c) = @_; + + my $build = $c->stash->{build}; + + requireProjectOwner($c, $build->project); + + $c->flash->{buildMsg} = "Build XXX added to the queue."; + + $c->res->redirect($c->uri_for($c->controller('Root')->action_for('queue'))); +} + + 1; diff --git a/src/lib/Hydra/Controller/Root.pm b/src/lib/Hydra/Controller/Root.pm index e1e1cc86..d2cd6551 100644 --- a/src/lib/Hydra/Controller/Root.pm +++ b/src/lib/Hydra/Controller/Root.pm @@ -60,6 +60,7 @@ sub queue :Local { $c->stash->{template} = 'queue.tt'; $c->stash->{queue} = [$c->model('DB::Builds')->search( {finished => 0}, {join => 'schedulingInfo', order_by => ["priority DESC", "timestamp"]})]; + $c->stash->{flashMsg} = $c->flash->{buildMsg}; } diff --git a/src/root/build.tt b/src/root/build.tt index 7318e480..09cd78fa 100644 --- a/src/root/build.tt +++ b/src/root/build.tt @@ -211,7 +211,6 @@ [% END %] - [% IF c.user_exists && available %]

Add to release: @@ -219,6 +218,9 @@

[% END %] +[% IF c.user_exists %] +

[Clone this build]

+[% END %] [% IF build.buildproducts %] diff --git a/src/root/clone-build.tt b/src/root/clone-build.tt new file mode 100644 index 00000000..560c9634 --- /dev/null +++ b/src/root/clone-build.tt @@ -0,0 +1,48 @@ +[% WRAPPER layout.tt title="Clone Build" %] +[% PROCESS common.tt %] +[% USE HTML %] +[% edit=1 %] + +

Clone Build

+ +

Cloning allows you to perform a build with modified inputs.

+ +
+ +

Nix expression

+ +

Evaluate job build.job.name) %] + /> in Nix expression build.nixexprpath) %] + /> in input build.nixexprinput) + %] />.

+ +

Build inputs

+ + + + + + + [% FOREACH input IN build.inputs -%] + + + + + + [% END -%] + +
NameTypeValue
[% input.name %] + [% INCLUDE renderSelection curValue=input.type param="input-$input.name-type" options=inputTypes %] + + input.value || input.uri || input.dependency.id) %] /> +
+ +

+ +
+ +[% END %] diff --git a/src/root/project.tt b/src/root/project.tt index 2980052d..2b36cecf 100644 --- a/src/root/project.tt +++ b/src/root/project.tt @@ -95,7 +95,7 @@ [% END %] -[Create a new jobset] +

[Create a new jobset]

Views

diff --git a/src/root/queue.tt b/src/root/queue.tt index 86efed27..4b954532 100644 --- a/src/root/queue.tt +++ b/src/root/queue.tt @@ -3,6 +3,10 @@

Hydra Queue

+[% IF flashMsg %] +

[% flashMsg %]

+[% END %] + [% IF queue.size == 0 %]

The queue is empty.