diff --git a/lib/NGCP/Panel/Controller/API/ProvisioningTemplatesItem.pm b/lib/NGCP/Panel/Controller/API/ProvisioningTemplatesItem.pm index d968872b7a..9c93154624 100644 --- a/lib/NGCP/Panel/Controller/API/ProvisioningTemplatesItem.pm +++ b/lib/NGCP/Panel/Controller/API/ProvisioningTemplatesItem.pm @@ -109,7 +109,9 @@ __PACKAGE__->set_config({ Method => 'POST', ACLDetachTo => '/api/root/invalid_user', AllowedRole => [qw/admin reseller ccareadmin ccare/], - Does => [qw(ACL RequireSSL)] + Does => [qw(ACL RequireSSL)], + ContentType => [qw#application/json text/csv#], + ResourceContentType => ['text/csv'], }, item_get_reseller => { @@ -173,7 +175,9 @@ __PACKAGE__->set_config({ Method => 'POST', ACLDetachTo => '/api/root/invalid_user', AllowedRole => [qw/admin reseller ccareadmin ccare/], - Does => [qw(ACL RequireSSL)] + Does => [qw(ACL RequireSSL)], + ContentType => [qw#application/json text/csv#], + ResourceContentType => ['text/csv'], }, } }); @@ -336,12 +340,21 @@ sub post { resource_media_type => $method_config->{ResourceContentType}, ); return unless $resource; + my $purge = $c->req->params->{purge_existing}; + if (length($purge) + and ('1' eq $purge + or 'true' eq lc($purge))) { + $purge = 1; + } else { + $purge = 0; + } if (!$non_json_data || !$data) { my $context; try { $context = NGCP::Panel::Utils::ProvisioningTemplates::provision_begin( - c => $c, + c => $c, + purge => $purge, ); NGCP::Panel::Utils::ProvisioningTemplates::provision_commit_row( c => $c, @@ -367,21 +380,24 @@ sub post { return; } } else { - #try { - # #$processed_ok(array), $processed_failed(array), $info, $error - # $data_processed_result = $self->process_data( - # c => $c, - # data => \$data, - # resource => $resource, - # form => $form, - # process_extras => $process_extras, - # ); - #} catch($e) { - # $c->log->error("failed to process non json data: $e"); - # $self->error($c, HTTP_INTERNAL_SERVER_ERROR, "Internal Server Error"); - # last; - #}; - + try { + my ($linecount,$errors) = NGCP::Panel::Utils::ProvisioningTemplates::process_csv( + c => $c, + data => \$data, + purge => $purge, + ); + if (scalar @$errors) { + $c->log->error(sprintf('CSV file (%d lines) processed, %d error(s).', $linecount, scalar @$errors)); + $self->error($c, HTTP_INTERNAL_SERVER_ERROR, "Internal Server Error"); + return; + } else { + $c->log->debug(sprintf('CSV file (%d lines) processed, %d error(s).', $linecount, 0)); + } + } catch($e) { + $c->log->error("failed to process CSV file: $e"); + $self->error($c, HTTP_INTERNAL_SERVER_ERROR, "Internal Server Error"); + return; + } } $self->return_representation_post($c); @@ -390,4 +406,3 @@ sub post { } 1; - diff --git a/lib/NGCP/Panel/Controller/BatchProvisioning.pm b/lib/NGCP/Panel/Controller/BatchProvisioning.pm index 783348b1ff..e250e1397e 100644 --- a/lib/NGCP/Panel/Controller/BatchProvisioning.pm +++ b/lib/NGCP/Panel/Controller/BatchProvisioning.pm @@ -246,7 +246,7 @@ sub edit :Chained('template_base') :PathPart('edit') :Args(0) { $params->{reseller}{id} = delete $params->{reseller_id}; $params = merge($params, $c->session->{created_objects}); - $c->stash->{old_name} = $template; + $c->stash->{old_name} = $c->stash->{provisioning_templates}->{$template}->{name}; if($c->user->is_superuser) { $form = NGCP::Panel::Form::get("NGCP::Panel::Form::ProvisioningTemplate::Admin", $c); diff --git a/lib/NGCP/Panel/Utils/ProvisioningTemplates.pm b/lib/NGCP/Panel/Utils/ProvisioningTemplates.pm index 3301f98512..b5728015c1 100644 --- a/lib/NGCP/Panel/Utils/ProvisioningTemplates.pm +++ b/lib/NGCP/Panel/Utils/ProvisioningTemplates.pm @@ -149,7 +149,6 @@ sub validate_template_name { unless ($name =~ /^[a-zA-Z0-9 -]+$/) { die("template name contains invalid characters\n"); } - #$c->log->warn("test: ".$template); if (not defined $old_name or $old_name ne $name) { @@ -525,6 +524,7 @@ sub provision_commit_row { ); my $purge = $context->{_purge} || $values->{$PURGE_FIELD_NAME}; + try { _init_subscriber_context( $c, diff --git a/tools_bin/ngcp-provisioning-template b/tools_bin/ngcp-provisioning-template index 91fb0e567e..ff88dc940a 100755 --- a/tools_bin/ngcp-provisioning-template +++ b/tools_bin/ngcp-provisioning-template @@ -151,6 +151,25 @@ sub _create_c { } my $db = _get_schema(); + my $req = sub { + my $self = shift; + return _create_mock('_request', + _param => { + # '$c->request->params' => undef, + }, + param => sub { + my $self = shift; + my $key = shift; + return $self->{param}->{$key} if $key; + return $self->{param}; + }, + path => sub { + my $self = shift; + return 'api/'; + }, + ); + }; + $c = _create_mock('c', _stash => { @@ -219,20 +238,8 @@ sub _create_c { #}, ); }, - request => sub { - my $self = shift; - return _create_mock('_request', - _param => { - # '$c->request->params' => undef, - }, - param => sub { - my $self = shift; - my $key = shift; - return $self->{param}->{$key} if $key; - return $self->{param}; - }, - ); - }, + request => $req, + req => $req, );