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." )