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