MT#15797 skip domain reload

* should be probably uniquely implemented for all relevant api calls

Change-Id: Ia8a64623218a288c8f91f4238e891b97db39df52
changes/49/2949/6
Gerhard Jungwirth 10 years ago
parent c54c24aabf
commit ab59660373

@ -69,7 +69,7 @@ __PACKAGE__->config(
Does => [qw(ACL CheckTrailingSlash RequireSSL)],
Method => $_,
Path => __PACKAGE__->dispatch_path,
} } @{ __PACKAGE__->allowed_methods }
} } @{ __PACKAGE__->allowed_methods },
},
action_roles => [qw(HTTPMethods)],
);
@ -79,6 +79,7 @@ sub auto :Private {
$self->set_body($c);
$self->log_request($c);
return 1;
}
sub GET :Allow {
@ -160,6 +161,7 @@ sub POST :Allow {
media_type => 'application/json',
);
last unless $resource;
my ($sip_reload, $xmpp_reload) = $self->check_reload($c, $resource);
my $form = $self->get_form($c);
last unless $self->validate_form(
@ -215,8 +217,8 @@ sub POST :Allow {
$guard->commit;
try {
unless($c->config->{features}->{debug}) {
$self->xmpp_domain_reload($c, $resource->{domain});
$self->xmpp_domain_reload($c, $resource->{domain}) if $xmpp_reload;
if ($sip_reload) {
my (undef, $xmlrpc_res) = $self->sip_domain_reload($c);
if (!defined $xmlrpc_res || $xmlrpc_res < 1) {
die "XMLRPC failed";
@ -240,6 +242,7 @@ sub end : Private {
my ($self, $c) = @_;
$self->log_response($c);
return;
}
# vim: set tabstop=4 expandtab:

@ -38,7 +38,7 @@ __PACKAGE__->config(
ACLDetachTo => '/api/root/invalid_user',
AllowedRole => [qw/admin reseller/],
Does => [qw(ACL RequireSSL)],
}) }
}) },
},
action_roles => [qw(HTTPMethods)],
);
@ -48,6 +48,7 @@ sub auto :Private {
$self->set_body($c);
$self->log_request($c);
return 1;
}
sub GET :Allow {
@ -61,9 +62,8 @@ sub GET :Allow {
my $response = HTTP::Response->new(HTTP_OK, undef, HTTP::Headers->new(
(map { # XXX Data::HAL must be able to generate links with multiple relations
s|rel="(http://purl.org/sipwise/ngcp-api/#rel-resellers)"|rel="item $1"|;
s/rel=self/rel="item self"/;
$_
s|rel="(http://purl.org/sipwise/ngcp-api/#rel-resellers)"|rel="item $1"|r =~
s/rel=self/rel="item self"/r;
} $hal->http_headers),
), $hal->as_json);
$c->response->headers($response->headers);
@ -99,6 +99,8 @@ sub DELETE :Allow {
my $domain = $self->item_by_id($c, $id);
last unless $self->resource_exists($c, domain => $domain);
my ($sip_reload, $xmpp_reload) = $self->check_reload($c, $c->req->params);
if($c->user->roles eq "admin") {
} elsif($c->user->roles eq "reseller") {
unless($domain->domain_resellers->reseller_id == $c->user->reseller_id) {
@ -125,10 +127,8 @@ sub DELETE :Allow {
$guard->commit;
try {
unless($c->config->{features}->{debug}) {
$self->xmpp_domain_disable($c, $domain);
$self->sip_domain_reload($c);
}
$self->xmpp_domain_disable($c, $domain) if $xmpp_reload;
$self->sip_domain_reload($c) if $sip_reload;
} catch($e) {
$c->log->error("failed to deactivate domain: $e"); # TODO: user, message, trace, ...
$self->error($c, HTTP_INTERNAL_SERVER_ERROR, "Failed to deactivate domain.");
@ -180,6 +180,7 @@ sub end : Private {
my ($self, $c) = @_;
$self->log_response($c);
return;
}
# vim: set tabstop=4 expandtab:

@ -90,6 +90,22 @@ sub get_valid_patch_data {
return $json;
}
sub check_reload {
my ($self, $c, $resource) = @_;
my ($sip, $xmpp) = (1,1);
if (delete $resource->{_skip_sip_reload} || $c->config->{features}->{debug}) {
$sip = 0;
$c->log->debug("skipping SIP reload");
}
if (delete $resource->{_skip_xmpp_reload} || $c->config->{features}->{debug}) {
$xmpp = 0;
$c->log->debug("skipping XMPP reload");
}
return ($sip, $xmpp);
}
sub validate_form {
my ($self, %params) = @_;

Loading…
Cancel
Save