- } elsif ( $sth->rows == 1 ) {
- my $row = $sth->fetchrow_arrayref;
- my $srvid = $row->[0];
- warn "rm_services: updating srvid#$srvid\n" if $DEBUG;
- $sth = $dbh->prepare(
- 'UPDATE rm_services SET '.join(', ', map {"$_ = ?"} keys %params) .
- ' WHERE srvid = ?'
- );
- $sth->execute(values(%params), $srvid) or die $dbh->errstr;
- return $srvid;
- } else { # $sth->rows == 0
- # create a new one
- # but first... get the next available srvid
+
+ } elsif ( $sth->rows == 0 ) {
+ # leave this blank to disable creating new service defs
+ my $template_name = $self->option('template_name');
+
+ die "Can't create a new service profile--no template service specified.\n"
+ unless $template_name;
+
+ warn "rm_services: fetching template '$template_name'\n" if $DEBUG;
+ $sth = $dbh->prepare('SELECT * FROM rm_services WHERE srvname = ? LIMIT 1');
+ $sth->execute($template_name);
+ die "Can't create a new service profile--template service ".
+ "'$template_name' not found.\n" unless $sth->rows == 1;
+ my $template = $sth->fetchrow_hashref;
+ %params = (%$template, %params);
+
+ # get the next available srvid