You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficcontrol.apache.org by da...@apache.org on 2017/04/26 23:55:22 UTC
[3/6] incubator-trafficcontrol git commit: adds api endpoint to
remove a cache from a ds
adds api endpoint to remove a cache from a ds
Project: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/commit/29eea414
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/tree/29eea414
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/diff/29eea414
Branch: refs/heads/master
Commit: 29eea414a5e64f65d38e8ababaea27c4fa3bc0bd
Parents: 9607cba
Author: Jeremy Mitchell <mi...@gmail.com>
Authored: Thu Apr 20 12:26:58 2017 -0600
Committer: Dan Kirkwood <da...@gmail.com>
Committed: Wed Apr 26 17:54:08 2017 -0600
----------------------------------------------------------------------
.../traffic_ops_api/v12/deliveryservice.rst | 31 ++++++++++++++++++++
.../app/lib/API/DeliveryServiceServer.pm | 24 +++++++++++++++
traffic_ops/app/lib/TrafficOpsRoutes.pm | 7 +++--
.../app/t/api/1.2/deliveryservice_server.t | 5 +++-
4 files changed, 64 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/29eea414/docs/source/development/traffic_ops_api/v12/deliveryservice.rst
----------------------------------------------------------------------
diff --git a/docs/source/development/traffic_ops_api/v12/deliveryservice.rst b/docs/source/development/traffic_ops_api/v12/deliveryservice.rst
index 8fe4e48..3ae4d24 100644
--- a/docs/source/development/traffic_ops_api/v12/deliveryservice.rst
+++ b/docs/source/development/traffic_ops_api/v12/deliveryservice.rst
@@ -910,6 +910,37 @@ Server
}
+**DELETE /api/1.2/deliveryservices/:dsId/servers/:id**
+
+ Removes a server (cache) from a delivery service.
+
+ Authentication Required: Yes
+
+ Role(s) Required: Admin or Oper (if delivery service is not assigned to user)
+
+ **Request Route Parameters**
+
+ +-----------------+----------+---------------------------------------------------+
+ | Name | Required | Description |
+ +=================+==========+===================================================+
+ | ``dsId`` | yes | Delivery service ID. |
+ +-----------------+----------+---------------------------------------------------+
+ | ``id`` | yes | Server (cache) ID. |
+ +-----------------+----------+---------------------------------------------------+
+
+ **Response Example** ::
+
+ {
+ "alerts": [
+ {
+ "level": "success",
+ "text": "Server removed from delivery service."
+ }
+ ],
+ }
+
+|
+
.. _to-api-v12-ds-sslkeys:
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/29eea414/traffic_ops/app/lib/API/DeliveryServiceServer.pm
----------------------------------------------------------------------
diff --git a/traffic_ops/app/lib/API/DeliveryServiceServer.pm b/traffic_ops/app/lib/API/DeliveryServiceServer.pm
index 3cfee04..2ee1533 100644
--- a/traffic_ops/app/lib/API/DeliveryServiceServer.pm
+++ b/traffic_ops/app/lib/API/DeliveryServiceServer.pm
@@ -176,4 +176,28 @@ sub assign_ds_to_cachegroup {
$self->success( $response, "Delivery services successfully assigned to all the servers of cache group $cg_id" );
}
+sub remove_server_from_ds {
+ my $self = shift;
+ my $ds_id = $self->param('dsId');
+ my $server_id = $self->param('id');
+
+ if ( !&is_privileged($self) && !$self->is_delivery_service_assigned($ds_id) ) {
+ $self->forbidden("Forbidden. Delivery service not assigned to user.");
+ }
+
+ my $ds_server = $self->db->resultset('DeliveryserviceServer')->search( { deliveryservice => $ds_id, server => $server_id }, { prefetch => [ 'deliveryservice', 'server' ] } );
+ if ( !defined($ds_server) ) {
+ return $self->not_found();
+ }
+
+ my $row = $ds_server->next;
+ my $rs = $ds_server->delete();
+ if ($rs) {
+ &log( $self, "Server [ " . $row->server->id . " | " . $row->server->host_name . " ] was removed from deliveryservice [ " . $row->deliveryservice->id . " | " . $row->deliveryservice->xml_id . " ].", "APICHANGE" );
+ return $self->success_message("Server removed from delivery service.");
+ }
+
+ return $self->alert( "Failed to remove server from delivery service." );
+}
+
1;
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/29eea414/traffic_ops/app/lib/TrafficOpsRoutes.pm
----------------------------------------------------------------------
diff --git a/traffic_ops/app/lib/TrafficOpsRoutes.pm b/traffic_ops/app/lib/TrafficOpsRoutes.pm
index 15aaac8..683df81 100644
--- a/traffic_ops/app/lib/TrafficOpsRoutes.pm
+++ b/traffic_ops/app/lib/TrafficOpsRoutes.pm
@@ -495,14 +495,17 @@ sub api_routes {
$r->get("/api/$version/user/:id/deliveryservices/available" => [ id => qr/\d+/ ] )->over( authenticated => 1 )
->to( 'User#get_available_deliveryservices', namespace => $namespace );
+ # delivery service / server assignments
+ $r->post("/api/$version/deliveryservices/:xml_id/servers")->over( authenticated => 1 )
+ ->to( 'Deliveryservice2#assign_servers', namespace => $namespace );
+ $r->delete("/api/$version/deliveryservices/:dsId/servers/:id" => [ dsId => qr/\d+/, id => qr/\d+/ ] )->over( authenticated => 1 )->to( 'DeliveryServiceServer#remove_server_from_ds', namespace => $namespace );
+
# alternate deliveryservice routes
$r->get("/api/$version/deliveryservices/list")->over( authenticated => 1 )->to( 'Deliveryservice2#delivery_services', namespace => $namespace );
$r->get( "/api/$version/deliveryservices/:id/get" => [ id => qr/\d+/ ] )->over( authenticated => 1 )
->to( 'Deliveryservice2#delivery_services', namespace => $namespace );
$r->post("/api/$version/deliveryservices/create")->over( authenticated => 1 )->to( 'Deliveryservice2#create', namespace => $namespace );
$r->put("/api/$version/deliveryservices/:id/update")->over( authenticated => 1 )->to( 'Deliveryservice2#update', namespace => $namespace );
- $r->post("/api/$version/deliveryservices/:xml_id/servers")->over( authenticated => 1 )
- ->to( 'Deliveryservice2#assign_servers', namespace => $namespace );
# -- DELIVERYSERVICES: HEALTH
$r->get("/api/$version/deliveryservices/:id/health" => [ id => qr/\d+/ ] )->over( authenticated => 1 )->to( 'Deliveryservice#health', namespace => $namespace );
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/29eea414/traffic_ops/app/t/api/1.2/deliveryservice_server.t
----------------------------------------------------------------------
diff --git a/traffic_ops/app/t/api/1.2/deliveryservice_server.t b/traffic_ops/app/t/api/1.2/deliveryservice_server.t
index 59a9a4d..ba9ad80 100644
--- a/traffic_ops/app/t/api/1.2/deliveryservice_server.t
+++ b/traffic_ops/app/t/api/1.2/deliveryservice_server.t
@@ -50,7 +50,7 @@ ok $t->post_ok('/api/1.2/cachegroups/300/deliveryservices' => {Accept => 'applic
->json_is( "/alerts/0/text" => "Delivery services successfully assigned to all the servers of cache group 300" )
, 'Does the delivery services assign details return?';
-ok $t->get_ok('/api/1.2/deliveryserviceserver.json')
+ok $t->get_ok('/api/1.2/deliveryserviceserver')
->status_is(200)->or( sub { diag $t->tx->res->content->asset->{content}; } )
->json_is( "/response/0/deliveryService" => "100" )
->json_is( "/response/0/server" => 100 )
@@ -60,6 +60,9 @@ ok $t->get_ok('/api/1.2/deliveryserviceserver.json')
->json_is( "/response/2/server" => 600 )
, 'Does the delivery services servers details return?';
+ok $t->delete_ok('/api/1.2/deliveryservices/100/servers/100')->status_is(200)->or( sub { diag $t->tx->res->content->asset->{content}; } );
+ok $t->delete_ok('/api/1.2/deliveryservices/100/servers/999')->status_is(404)->or( sub { diag $t->tx->res->content->asset->{content}; } );
+
ok $t->get_ok('/logout')->status_is(302)->or( sub { diag $t->tx->res->content->asset->{content}; } );
$dbh->disconnect();
done_testing();