You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficcontrol.apache.org by de...@apache.org on 2016/11/04 20:28:01 UTC
[3/6] incubator-trafficcontrol git commit: added _by_name
functionality for testing
added _by_name functionality for testing
Project: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/commit/132c40cd
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/tree/132c40cd
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/diff/132c40cd
Branch: refs/heads/master
Commit: 132c40cd863540a8473e0d61ce75cfafaba8d6d4
Parents: a8244f7
Author: Dewayne Richardson <de...@apache.org>
Authored: Wed Nov 2 14:22:20 2016 -0600
Committer: Dewayne Richardson <de...@apache.org>
Committed: Fri Nov 4 14:25:40 2016 -0600
----------------------------------------------------------------------
traffic_ops/app/lib/API/Region.pm | 80 ++++++++++++++++++++++------
traffic_ops/app/lib/TrafficOpsRoutes.pm | 8 ++-
2 files changed, 70 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/132c40cd/traffic_ops/app/lib/API/Region.pm
----------------------------------------------------------------------
diff --git a/traffic_ops/app/lib/API/Region.pm b/traffic_ops/app/lib/API/Region.pm
index d8a23cd..ec6ff06 100644
--- a/traffic_ops/app/lib/API/Region.pm
+++ b/traffic_ops/app/lib/API/Region.pm
@@ -31,18 +31,42 @@ sub index {
my $orderby = $self->param('orderby') || "name";
my $rs_data = $self->db->resultset("Region")->search( undef, { prefetch => ['division'], order_by => 'me.' . $orderby } );
while ( my $row = $rs_data->next ) {
+ my $division = { "id" => $row->division->id,
+ "name" => $row->division->name
+ };
push(
@data, {
"id" => $row->id,
"name" => $row->name,
- "division" => $row->division->id,
- "divisionName" => $row->division->name
+ "division" => $division,
}
);
}
$self->success( \@data );
}
+sub index_by_name {
+ my $self = shift;
+ my $name = $self->param('name');
+
+ my $rs_data = $self->db->resultset("Region")->search( { 'me.name' => $name }, { prefetch => ['division'] } );
+ my @data = ();
+ while ( my $row = $rs_data->next ) {
+ my $division = { "id" => $row->division->id,
+ "name" => $row->division->name
+ };
+ push(
+ @data, {
+ "id" => $row->id,
+ "name" => $row->name,
+ "division" => $division,
+ }
+ );
+ }
+ $self->success( \@data );
+}
+
+
sub show {
my $self = shift;
my $id = $self->param('id');
@@ -50,12 +74,14 @@ sub show {
my $rs_data = $self->db->resultset("Region")->search( { 'me.id' => $id }, { prefetch => ['division'] } );
my @data = ();
while ( my $row = $rs_data->next ) {
+ my $division = { "id" => $row->division->id,
+ "name" => $row->division->name
+ };
push(
@data, {
"id" => $row->id,
"name" => $row->name,
- "division" => $row->division->id,
- "divisionName" => $row->division->name
+ "division" => $division,
}
);
}
@@ -96,11 +122,11 @@ sub update {
my $rs = $region->update($values);
if ($rs) {
my $response;
- $response->{id} = $rs->id;
- $response->{name} = $rs->name;
- $response->{division} = $rs->division->id;
- $response->{divisionName}= $rs->division->name;
- $response->{lastUpdated} = $rs->last_updated;
+ $response->{id} = $rs->id;
+ $response->{name} = $rs->name;
+ $response->{division}{id} = $rs->division->id;
+ $response->{division}{name} = $rs->division->name;
+ $response->{lastUpdated} = $rs->last_updated;
&log( $self, "Updated Region name '" . $rs->name . "' for id: " . $rs->id, "APICHANGE" );
return $self->success( $response, "Region update was successful." );
}
@@ -144,8 +170,8 @@ sub create {
my $response;
$response->{id} = $rs->id;
$response->{name} = $rs->name;
- $response->{division} = $rs->division->id;
- $response->{divisionName} = $rs->division->name;
+ $response->{division}{id} = $rs->division->id;
+ $response->{division}{name} = $rs->division->name;
$response->{lastUpdated} = $rs->last_updated;
&log( $self, "Created Region name '" . $rs->name . "' for id: " . $rs->id, "APICHANGE" );
@@ -158,7 +184,7 @@ sub create {
}
-sub create_for_div {
+sub create_for_division {
my $self = shift;
my $division_name = $self->param('division_name');
my $params = $self->req->json;
@@ -190,10 +216,10 @@ sub create_for_div {
my $response;
my $rs = $self->db->resultset('Region')->find( { id => $insert->id } );
if ( defined($rs) ) {
- $response->{id} = $rs->id;
- $response->{name} = $rs->name;
- $response->{divisionName} = $division_name;
- $response->{divsionId} = $rs->division->id;
+ $response->{id} = $rs->id;
+ $response->{name} = $rs->name;
+ $response->{division}{id} = $rs->division->id;
+ $response->{division}{name} = $division_name;
return $self->success($response);
}
return $self->alert( "create region " . $params->{name} . " failed." );
@@ -220,5 +246,27 @@ sub delete {
}
}
+sub delete_by_name {
+ my $self = shift;
+ my $name = $self->param('name');
+
+ if ( !&is_oper($self) ) {
+ return $self->forbidden();
+ }
+
+ my $region = $self->db->resultset('Region')->find( { name => $name } );
+ if ( !defined($region) ) {
+ return $self->not_found();
+ }
+
+ my $rs = $region->delete();
+ if ($rs) {
+ return $self->success_message("Region deleted.");
+ } else {
+ return $self->alert( "Region delete failed." );
+ }
+}
+
+
1;
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/132c40cd/traffic_ops/app/lib/TrafficOpsRoutes.pm
----------------------------------------------------------------------
diff --git a/traffic_ops/app/lib/TrafficOpsRoutes.pm b/traffic_ops/app/lib/TrafficOpsRoutes.pm
index 6d23600..0534318 100644
--- a/traffic_ops/app/lib/TrafficOpsRoutes.pm
+++ b/traffic_ops/app/lib/TrafficOpsRoutes.pm
@@ -549,9 +549,11 @@ sub api_routes {
# -- DIVISIONS
$r->get("/api/$version/divisions")->over( authenticated => 1 )->to( 'Division#index', namespace => $namespace );
$r->get( "/api/$version/divisions/:id" => [ id => qr/\d+/ ] )->over( authenticated => 1 )->to( 'Division#show', namespace => $namespace );
+ $r->get( "/api/$version/divisions/name/:name")->over( authenticated => 1 )->to( 'Division#index_by_name', namespace => $namespace );
$r->put("/api/$version/divisions/:id")->over( authenticated => 1 )->to( 'Division#update', namespace => $namespace );
$r->post("/api/$version/divisions")->over( authenticated => 1 )->to( 'Division#create', namespace => $namespace );
$r->delete("/api/$version/divisions/:id")->over( authenticated => 1 )->to( 'Division#delete', namespace => $namespace );
+ $r->delete("/api/$version/divisions/name/:name")->over( authenticated => 1 )->to( 'Division#delete_by_name', namespace => $namespace );
# -- FEDERATIONS
$r->get("/internal/api/$version/federations")->over( authenticated => 1 )->to( 'Federation#index', namespace => $namespace );
@@ -601,7 +603,6 @@ sub api_routes {
$r->get("/api/$version/phys_locations/trimmed")->over( authenticated => 1 )->to( 'PhysLocation#index_trimmed', namespace => $namespace );
$r->get( "/api/$version/phys_locations/:id" => [ id => qr/\d+/ ] )->over( authenticated => 1 )->to( 'PhysLocation#show', namespace => $namespace );
$r->post("/api/$version/phys_locations")->over( authenticated => 1 )->to( 'PhysLocation#create', namespace => $namespace );
- $r->post("/api/$version/regions/:region_name/phys_locations")->over( authenticated => 1 )->to( 'PhysLocation#create_for_reg', namespace => $namespace );
$r->put("/api/$version/phys_locations/:id")->over( authenticated => 1 )->to( 'PhysLocation#update', namespace => $namespace );
$r->delete("/api/$version/phys_locations/:id")->over( authenticated => 1 )->to( 'PhysLocation#delete', namespace => $namespace );
@@ -623,10 +624,13 @@ sub api_routes {
# Supports ?orderby=key
$r->get("/api/$version/regions")->over( authenticated => 1 )->to( 'Region#index', namespace => $namespace );
$r->get( "/api/$version/regions/:id" => [ id => qr/\d+/ ] )->over( authenticated => 1 )->to( 'Region#show', namespace => $namespace );
+ $r->get( "/api/$version/regions/name/:name" => [ id => qr/\d+/ ] )->over( authenticated => 1 )->to( 'Region#index_by_name', namespace => $namespace );
$r->put("/api/$version/regions/:id")->over( authenticated => 1 )->to( 'Region#update', namespace => $namespace );
$r->post("/api/$version/regions")->over( authenticated => 1 )->to( 'Region#create', namespace => $namespace );
- $r->post("/api/$version/divisions/:division_name/regions")->over( authenticated => 1 )->to( 'Region#create_for_div', namespace => $namespace );
+ $r->post("/api/$version/divisions/:division_name/regions")->over( authenticated => 1 )->to( 'Region#create_for_division', namespace => $namespace );
$r->delete("/api/$version/regions/:id")->over( authenticated => 1 )->to( 'Region#delete', namespace => $namespace );
+ $r->delete("/api/$version/regions/name/:name")->over( authenticated => 1 )->to( 'Region#delete_by_name', namespace => $namespace );
+ $r->post("/api/$version/regions/:region_name/phys_locations")->over( authenticated => 1 )->to( 'PhysLocation#create_for_region', namespace => $namespace );
# -- ROLES
# Supports ?orderby=key