Hydra/20: Jobset clone feature

[?]
Apr 23, 2010, 11:20 AM
RSEGBU6CIEDRNTL7R6Q7RF2IZGCN3HH6VTPGFBKD77LSHEUD6EKAC

Dependencies

  • [2] ZI535LI6 * hydra: 'new' UI for project/jobset/job/build
  • [3] AKAXJDMW * Disable the statistics on the project, jobset and job pages for now
  • [4] ODNCGFQ5 * Improved the navigation bar: don't include all projects (since that
  • [*] 3HZY24CX * Make jobsets viewable under
  • [*] D5QIOJGP * Move everything up one directory.

Change contents

  • edit in src/lib/Hydra/Controller/Jobset.pm at line 252
    [3.4555]
    [6.1137]
    }
    sub clone : Chained('jobset') PathPart('clone') Args(0) {
    my ($self, $c) = @_;
    my $jobset = $c->stash->{jobset};
    requireProjectOwner($c, $jobset->project);
    $c->stash->{template} = 'clone-jobset.tt';
  • edit in src/lib/Hydra/Controller/Jobset.pm at line 264
    [6.1140]
    [6.1140]
    sub clone_submit : Chained('jobset') PathPart('clone/submit') Args(0) {
    my ($self, $c) = @_;
  • edit in src/lib/Hydra/Controller/Jobset.pm at line 267
    [6.1141]
    [6.1141]
    my $jobset = $c->stash->{jobset};
    requireProjectOwner($c, $jobset->project);
    requirePost($c);
    my $newjobsetName = trim $c->request->params->{"newjobset"};
    error($c, "Invalid jobset name: $newjobsetName") unless $newjobsetName =~ /^[[:alpha:]][\w\-]*$/;
    my $newjobset;
    txn_do($c->model('DB')->schema, sub {
    $newjobset = $jobset->project->jobsets->create(
    { name => $newjobsetName
    , description => $jobset->description
    , nixexprpath => $jobset->nixexprpath
    , nixexprinput => $jobset->nixexprinput
    , enabled => 0
    , enableemail => $jobset->enableemail
    , emailoverride => $jobset->emailoverride
    });
    foreach my $input ($jobset->jobsetinputs) {
    my $newinput = $newjobset->jobsetinputs->create({name => $input->name, type => $input->type});
    foreach my $inputalt ($input->jobsetinputalts) {
    $newinput->jobsetinputalts->create({altnr => $inputalt->altnr, value => $inputalt->value});
    }
    }
    });
    $c->res->redirect($c->uri_for($c->controller('Jobset')->action_for("edit"), [$jobset->project->name, $newjobsetName]));
    }
  • file addition: clone-jobset.tt (----------)
    [7.1486]
    [% WRAPPER layout.tt title="Clone Jobset" %]
    [% PROCESS common.tt %]
    [% USE HTML %]
    [% edit=1 %]
    <form action="[% c.uri_for('/jobset' jobset.project.name jobset.name 'clone' 'submit') %]" method="post">
    <h2>Cloning jobset [% jobset.project.name %]:[% jobset.name %]</h2>
    <p>
    Name <tt><input type="text" class="string" name="newjobset" [% HTML.attributes(value => "") %] /></tt>
    </p>
    <p>
    <button type="submit">Next</button>
    </p>
    </form>
    [% END %]
  • replacement in src/root/jobset.tt at line 154
    [2.22195][2.22195:22340]()
    <h2>Information[% IF !edit %] <a class="smallLink" href="[% c.uri_for('/jobset' project.name jobset.name 'edit') %]">[Edit]</a>[% END %]</h2>
    [2.22195]
    [2.22340]
    <h2>Information</h2>
    [% IF !edit && c.user_exists %]
    <p>
    [ <a href="[% c.uri_for('/jobset' project.name jobset.name 'edit') %]">Edit</a> | <a href="[% c.uri_for('/jobset' project.name jobset.name 'clone') %]">Clone</a> ]
    </p>
    [% END %]