You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficcontrol.apache.org by mi...@apache.org on 2017/07/18 18:13:47 UTC

[10/25] incubator-trafficcontrol git commit: Tenant list - order by

Tenant list - order by


Project: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/commit/2dcc1394
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/tree/2dcc1394
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/diff/2dcc1394

Branch: refs/heads/master
Commit: 2dcc1394d3cea970eb42fa6322267062008dd869
Parents: 2eb94bf
Author: nir-sopher <ni...@gmail.com>
Authored: Fri Jun 2 15:16:11 2017 +0300
Committer: Jeremy Mitchell <mi...@gmail.com>
Committed: Tue Jul 18 12:12:31 2017 -0600

----------------------------------------------------------------------
 traffic_ops/app/lib/API/Tenant.pm     |  5 +++--
 traffic_ops/app/lib/UI/TenantUtils.pm | 22 ++++++++++++++--------
 traffic_ops/app/t/api/1.2/tenant.t    | 27 ++++++++++++++++++++++-----
 3 files changed, 39 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/2dcc1394/traffic_ops/app/lib/API/Tenant.pm
----------------------------------------------------------------------
diff --git a/traffic_ops/app/lib/API/Tenant.pm b/traffic_ops/app/lib/API/Tenant.pm
index ca67365..ab335e2 100644
--- a/traffic_ops/app/lib/API/Tenant.pm
+++ b/traffic_ops/app/lib/API/Tenant.pm
@@ -33,7 +33,8 @@ sub getTenantName {
 }
 
 sub index {
-	my $self 	= shift;
+	my $self 	= shift;	
+	my $orderby = $self->param('orderby') || "name";
 
 	my %idnames;
 	my $rs_data = $self->db->resultset("Tenant")->search();
@@ -43,7 +44,7 @@ sub index {
 
 	my @data = ();
 	my $tenantUtils = UI::TenantUtils->new($self);
-	my @tenants_list = $tenantUtils->get_hierarchic_tenants_list();
+	my @tenants_list = $tenantUtils->get_hierarchic_tenants_list(undef, $orderby);
 	foreach my $row (@tenants_list) {
 		if ($tenantUtils->is_tenant_resource_readable($row->id)) {
 			push(

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/2dcc1394/traffic_ops/app/lib/UI/TenantUtils.pm
----------------------------------------------------------------------
diff --git a/traffic_ops/app/lib/UI/TenantUtils.pm b/traffic_ops/app/lib/UI/TenantUtils.pm
index a7a33e4..118ba79 100644
--- a/traffic_ops/app/lib/UI/TenantUtils.pm
+++ b/traffic_ops/app/lib/UI/TenantUtils.pm
@@ -28,6 +28,8 @@ sub new {
 		user_tenant_id => -1,		
 		tenants_dict => undef,
 		root_tenants => undef,
+		order_by => -1,
+		ordered_by => undef,
 	};
 	return bless $self, $class;
 }
@@ -45,8 +47,9 @@ sub current_user_tenant {
 sub get_hierarchic_tenants_list {
 	my $self = shift;
 	my $tree_root = shift;	
+	my $order_by = shift;	
 	
-	$self->_init_tenants_if_needed();
+	$self->_init_tenants_if_needed($order_by);
 
 	my @stack = ();
 	if (defined($tree_root)){
@@ -100,12 +103,13 @@ sub is_tenant_resource_writeable {
 
 sub _init_tenants {
 	my $self = shift;
-	my $tenants_table = $self->{context}->db->resultset("Tenant")->search( undef, { order_by => "id" });
+	$self->{order_by} = shift || "name";#some default
+	my $tenants_table = $self->{context}->db->resultset("Tenant")->search( undef, { order_by => $self->{order_by} });
 	
-	my @ordered_by_id = ();
+	$self->{ordered_by} = ();
 	$self->{tenants_dict} = {};
 	while ( my $row = $tenants_table->next ) {
-		push (@ordered_by_id, $row->id);
+		push (@{ $self->{ordered_by} }, $row->id);
 		$self->{tenants_dict}->{$row->id} = {
 			row => $row,
 			parent => $row->parent_id,
@@ -114,7 +118,7 @@ sub _init_tenants {
 	}
 	
 	$self->{root_tenants} = ();
-	foreach my $key (@ordered_by_id) {
+	foreach my $key (@{ $self->{ordered_by} }) {
 		my $value = $self->{tenants_dict}->{$key};
 		my $parent = $value->{parent};
 		if (!defined($parent))
@@ -129,8 +133,10 @@ sub _init_tenants {
 
 sub _init_tenants_if_needed {
 	my $self = shift;
-	if (!defined($self->{tenants_dict})) {
-		$self->_init_tenants();
+	my $order_by = shift;
+	if (($self->{order_by} == -1) || (defined($order_by) && $order_by != $self->{order_by})) {
+		## first run to build the list OR (the order is important AND is not the current order)
+		$self->_init_tenants($order_by);
 	}
 }
 
@@ -165,7 +171,7 @@ sub _is_resource_accessable {
 		return 0;
 	}
 
-	$self->_init_tenants_if_needed();
+	$self->_init_tenants_if_needed(undef);
 	my $tenant_record = $self->{tenants_dict}->{$user_tenant};
 	my $is_active_tenant = $tenant_record->{row}->active;
 	if (! $is_active_tenant) {

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/2dcc1394/traffic_ops/app/t/api/1.2/tenant.t
----------------------------------------------------------------------
diff --git a/traffic_ops/app/t/api/1.2/tenant.t b/traffic_ops/app/t/api/1.2/tenant.t
index 285ea24..c2662b3 100644
--- a/traffic_ops/app/t/api/1.2/tenant.t
+++ b/traffic_ops/app/t/api/1.2/tenant.t
@@ -61,14 +61,14 @@ ok $t->post_ok('/api/1.2/tenants' => {Accept => 'application/json'} => json => {
 
 #no parent - would not accept
 ok $t->post_ok('/api/1.2/tenants' => {Accept => 'application/json'} => json => {
-        "name" => "tenantB" })->status_is(400);
+        "name" => "tenant" })->status_is(400);
 
 #now getting it excepted
 ok $t->post_ok('/api/1.2/tenants' => {Accept => 'application/json'} => json => {
-        "name" => "tenantB", "parentId" => $root_tenant_id })->status_is(200);
+        "name" => "tenant", "parentId" => $root_tenant_id })->status_is(200);
 
 my $tenantA_id = &get_tenant_id('tenantA');
-my $tenantB_id = &get_tenant_id('tenantB');
+my $tenantB_id = &get_tenant_id('tenant');
 #rename, and move to active
 ok $t->put_ok('/api/1.2/tenants/' . $tenantA_id  => {Accept => 'application/json'} => json => {
 			"name" => "tenantA2", "active" => 1, "parentId" => $root_tenant_id 
@@ -148,13 +148,30 @@ ok $t->post_ok('/api/1.2/tenants' => {Accept => 'application/json'} => json => {
 my $tenantD_id = &get_tenant_id('tenantD');
 my $tenantE_id = &get_tenant_id('tenantE');
 
-#list tenants- verify heirachic order
-$t->get_ok("/api/1.2/tenants")->status_is(200)->json_is( "/response/0/id", $root_tenant_id )
+#list tenants- verify heirachic order - order by id
+$t->get_ok("/api/1.2/tenants?orderby=id")->status_is(200)
+	->json_is( "/response/0/id", $root_tenant_id )
 	->json_is( "/response/1/id", $tenantA_id)
 	->json_is( "/response/2/id", $tenantD_id)
 	->json_is( "/response/3/id", $tenantE_id)
 	->json_is( "/response/4/id", $tenantB_id)->or( sub { diag $t->tx->res->content->asset->{content}; } );;
 
+#list tenants- verify heirachic order - order by name
+$t->get_ok("/api/1.2/tenants?orderby=name")->status_is(200)
+	->json_is( "/response/0/id", $root_tenant_id )
+	->json_is( "/response/2/id", $tenantA_id)
+	->json_is( "/response/3/id", $tenantD_id)
+	->json_is( "/response/4/id", $tenantE_id)
+	->json_is( "/response/1/id", $tenantB_id)->or( sub { diag $t->tx->res->content->asset->{content}; } );;
+
+#list tenants- verify heirachic order - order by name (default)
+$t->get_ok("/api/1.2/tenants")->status_is(200)
+	->json_is( "/response/0/id", $root_tenant_id )
+	->json_is( "/response/2/id", $tenantA_id)
+	->json_is( "/response/3/id", $tenantD_id)
+	->json_is( "/response/4/id", $tenantE_id)
+	->json_is( "/response/1/id", $tenantB_id)->or( sub { diag $t->tx->res->content->asset->{content}; } );;
+
 #cannot delete a tenant that have children
 ok $t->delete_ok('/api/1.2/tenants/' . $tenantA_id)->status_is(400)
 	->json_is( "/alerts/0/text" => "Tenant 'tenantA2' has children tenant(s): e.g 'tenantD'. Please update these tenants and retry." )