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 2018/05/01 14:42:54 UTC

[incubator-trafficcontrol] branch master updated (87ed44e -> 233aad4)

This is an automated email from the ASF dual-hosted git repository.

dewrich pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-trafficcontrol.git.


    from 87ed44e  return profiles without cdns by using left join
     new fa0e7d4  revert perl changes from crconfig PR
     new 233aad4  add back needed parts for go crconfig

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 traffic_ops/app/lib/API/Topology.pm     | 103 ++++++++++++++++++++++++++++++++
 traffic_ops/app/lib/TrafficOpsRoutes.pm |   7 +++
 traffic_ops/app/lib/UI/Topology.pm      |  16 +++++
 3 files changed, 126 insertions(+)
 create mode 100644 traffic_ops/app/lib/API/Topology.pm

-- 
To stop receiving notification emails like this one, please contact
dewrich@apache.org.

[incubator-trafficcontrol] 01/02: revert perl changes from crconfig PR

Posted by de...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

dewrich pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-trafficcontrol.git

commit fa0e7d4d3ddb76f5ac42747c9048b10a84d9326d
Author: Dan Kirkwood <da...@apache.org>
AuthorDate: Mon Apr 30 21:21:18 2018 +0000

    revert perl changes from crconfig PR
---
 traffic_ops/app/lib/API/Topology.pm     | 103 ++++++++++++++++++++++++++++++++
 traffic_ops/app/lib/TrafficOpsRoutes.pm |  10 +++-
 traffic_ops/app/lib/UI/Tools.pm         |  22 +++++--
 traffic_ops/app/lib/UI/Topology.pm      |  16 +++++
 4 files changed, 144 insertions(+), 7 deletions(-)

diff --git a/traffic_ops/app/lib/API/Topology.pm b/traffic_ops/app/lib/API/Topology.pm
new file mode 100644
index 0000000..ff72b57
--- /dev/null
+++ b/traffic_ops/app/lib/API/Topology.pm
@@ -0,0 +1,103 @@
+package API::Topology;
+#
+##
+## Licensed under the Apache License, Version 2.0 (the "License");
+## you may not use this file except in compliance with the License.
+## You may obtain a copy of the License at
+##
+##     http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+##
+##
+##
+#
+## JvD Note: you always want to put Utils as the first use. Sh*t don't work if it's after the Mojo lines.
+#
+
+
+use Mojo::Base 'Mojolicious::Controller';
+use JSON;
+use MojoPlugins::Response;
+use UI::Utils;
+use UI::Topology;
+use Data::Dumper;
+
+sub SnapshotCRConfig {
+    my $self = shift;
+    my $cdn_id = $self->param('id');
+    my $cdn_name = $self->param('cdn_name');
+    my $cdn;
+
+    if ( !&is_oper($self) ) {
+        return $self->forbidden("You must be an ADMIN or OPER to perform this operation!");
+    }
+
+    if ( defined $cdn_id ) {
+        $cdn = $self->db->resultset("Cdn")->find( { id => $cdn_id } );
+        $cdn_name = $cdn->name if defined $cdn;
+    }
+
+    if ( !defined $cdn ) {
+        $cdn = $self->db->resultset('Cdn')->find( { name => $cdn_name } );
+        if ( !defined($cdn) ) {
+            return $self->not_found();
+        }
+    }
+
+    my @cdn_names = $self->db->resultset('Server')->search({ 'type.name' => 'EDGE' }, { prefetch => [ 'cdn', 'type' ], group_by => 'cdn.name' } )->get_column('cdn.name')->all();
+    my $num = grep /^$cdn_name$/, @cdn_names;
+    if ($num <= 0) {
+        return $self->alert("CDN_name [" . $cdn_name. "] is not found in edge server cdn");
+    }
+
+    my $json = &UI::Topology::gen_crconfig_json($self, $cdn_name);
+    &UI::Topology::write_crconfig_json_to_db($self, $cdn_name, $json);
+    &UI::Utils::log($self, "Snapshot of CRConfig performed for $cdn_name", "APICHANGE");
+    return $self->success("SUCCESS");
+}
+
+sub get_snapshot {
+    my $self        = shift;
+    my $cdn_name    = $self->param('name');
+
+    if ( !&is_oper($self) ) {
+        return $self->forbidden();
+    }
+
+    my $cdn = $self->db->resultset('Cdn')->find( { name => $cdn_name } );
+    if ( !defined($cdn) ) {
+        return $self->not_found();
+    }
+
+    my $snapshot = $self->db->resultset('Snapshot')->search( { cdn => $cdn_name } )->get_column('content')->single();
+    if ( !defined($snapshot) ) {
+        return $self->success( {} );
+    }
+
+    $self->success( decode_json($snapshot) );
+}
+
+sub get_new_snapshot {
+    my $self        = shift;
+    my $cdn_name    = $self->param('name');
+
+    if ( !&is_oper($self) ) {
+        return $self->forbidden();
+    }
+
+    my $cdn = $self->db->resultset('Cdn')->find( { name => $cdn_name } );
+    if ( !defined($cdn) ) {
+        return $self->not_found();
+    }
+
+    my $json = &UI::Topology::gen_crconfig_json($self, $cdn_name);
+
+    $self->success( $json );
+}
+
+1;
diff --git a/traffic_ops/app/lib/TrafficOpsRoutes.pm b/traffic_ops/app/lib/TrafficOpsRoutes.pm
index 81bf55b..78b3e05 100644
--- a/traffic_ops/app/lib/TrafficOpsRoutes.pm
+++ b/traffic_ops/app/lib/TrafficOpsRoutes.pm
@@ -338,8 +338,7 @@ sub ui_routes {
 	$r->get('/tools/queue_updates')->over( authenticated => 1, not_ldap => 1 )->to( 'Tools#queue_updates', namespace => $namespace );
 	$r->get('/tools/snapshot_crconfig')->over( authenticated => 1, not_ldap => 1 )->to( 'Tools#snapshot_crconfig', namespace => $namespace );
 	$r->get('/tools/diff_crconfig/:cdn_name')->over( authenticated => 1, not_ldap => 1 )->to( 'Tools#diff_crconfig_iframe', namespace => $namespace );
-	# flash_and_close is a helper for the traffic_ops_golang migration, to allow Go handlers to intercept GUI routes, do their work, then redirect to this to perform the GUI operation
-	$r->get('/tools/flash_and_close/:msg')->over( authenticated => 1, not_ldap => 1 )->to( 'Tools#flash_and_close', namespace => $namespace );
+	$r->get('/tools/write_crconfig/:cdn_name')->over( authenticated => 1, not_ldap => 1 )->to( 'Tools#write_crconfig', namespace => $namespace );
 	$r->get('/tools/invalidate_content/')->over( authenticated => 1, not_ldap => 1 )->to( 'Tools#invalidate_content', namespace => $namespace );
 
 	# -- Topology - CCR Config, rewrote in json
@@ -449,6 +448,13 @@ sub api_routes {
 	# -- CDNS: ROUTING
 	$r->get("/api/$version/cdns/routing")->over( authenticated => 1, not_ldap => 1 )->to( 'Cdn#routing', namespace => $namespace );
 
+	# -- CDNS: SNAPSHOT
+	$r->get("/api/$version/cdns/:name/snapshot")->over( authenticated => 1, not_ldap => 1 )->to( 'Topology#get_snapshot', namespace => $namespace );
+	$r->get("/api/$version/cdns/:name/snapshot/new")->over( authenticated => 1, not_ldap => 1 )->to( 'Topology#get_new_snapshot', namespace => $namespace );
+	$r->put( "/api/$version/cdns/:id/snapshot" => [ id => qr/\d+/ ] )->over( authenticated => 1, not_ldap => 1 )
+	->to( 'Topology#SnapshotCRConfig', namespace => $namespace );
+	$r->put("/api/$version/snapshot/:cdn_name")->over( authenticated => 1, not_ldap => 1 )->to( 'Topology#SnapshotCRConfig', namespace => $namespace );
+
 	# -- CDNS: METRICS
 	#WARNING: this is an intentionally "unauthenticated" route.
 	$r->get("/api/$version/cdns/metric_types/:metric_type/start_date/:start_date/end_date/:end_date")->to( 'Cdn#metrics', namespace => $namespace );
diff --git a/traffic_ops/app/lib/UI/Tools.pm b/traffic_ops/app/lib/UI/Tools.pm
index 639c9ff..3ab70c1 100644
--- a/traffic_ops/app/lib/UI/Tools.pm
+++ b/traffic_ops/app/lib/UI/Tools.pm
@@ -105,11 +105,23 @@ sub diff_crconfig_iframe {
     );
 }
 
-sub flash_and_close {
-    my $self = shift;
-		my $msg = $self->param('msg');
-		$self->flash( alertmsg => $msg );
-		return $self->redirect_to('/utils/close_fancybox');
+sub write_crconfig {
+    my $self     = shift;
+    my $cdn_name = $self->param('cdn_name');
+    my ( $json, $error ) = UI::Topology::gen_crconfig_json( $self, $cdn_name );
+    if ( defined $error ) {
+        $self->flash( alertmsg => $error );
+    }
+    else {
+        if ( !&is_oper($self) ) {
+            $self->flash( alertmsg => "No can do. Get more privs." );
+        } else {
+            UI::Topology::write_crconfig_json_to_db( $self, $cdn_name, $json );
+            &log( $self, "Snapshot CRConfig created.", "OPER" );
+            $self->flash( alertmsg => "Successfully wrote CRConfig.json!" );
+        }
+    }
+    return $self->redirect_to('/utils/close_fancybox');
 }
 
 sub queue_updates {
diff --git a/traffic_ops/app/lib/UI/Topology.pm b/traffic_ops/app/lib/UI/Topology.pm
index aef8cad..ee0e750 100644
--- a/traffic_ops/app/lib/UI/Topology.pm
+++ b/traffic_ops/app/lib/UI/Topology.pm
@@ -573,6 +573,22 @@ sub gen_crconfig_json {
     return ($data_obj);
 }
 
+sub write_crconfig_json_to_db {
+    my $self          = shift;
+    my $cdn_name      = shift;
+    my $crconfig_db   = shift;
+    my $crconfig_json = encode_json($crconfig_db);
+
+    my $snapshot = $self->db->resultset('Snapshot')->find( { cdn => $cdn_name } );
+    if ( defined($snapshot) ) {
+        $snapshot->update({ content => $crconfig_json });
+    } else {
+        my $insert = $self->db->resultset('Snapshot')->create( { cdn => $cdn_name, content => $crconfig_json } );
+        $insert->insert();
+    }
+
+}
+
 sub diff_crconfig_json {
     my $self     = shift;
     my $json     = shift;

-- 
To stop receiving notification emails like this one, please contact
dewrich@apache.org.

[incubator-trafficcontrol] 02/02: add back needed parts for go crconfig

Posted by de...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

dewrich pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-trafficcontrol.git

commit 233aad4c2788093a88c0fcd049638dedd45df0ee
Author: Dan Kirkwood <da...@apache.org>
AuthorDate: Mon Apr 30 22:15:58 2018 +0000

    add back needed parts for go crconfig
---
 traffic_ops/app/lib/TrafficOpsRoutes.pm |  3 ++-
 traffic_ops/app/lib/UI/Tools.pm         | 22 +++++-----------------
 2 files changed, 7 insertions(+), 18 deletions(-)

diff --git a/traffic_ops/app/lib/TrafficOpsRoutes.pm b/traffic_ops/app/lib/TrafficOpsRoutes.pm
index 78b3e05..5c944b9 100644
--- a/traffic_ops/app/lib/TrafficOpsRoutes.pm
+++ b/traffic_ops/app/lib/TrafficOpsRoutes.pm
@@ -338,7 +338,8 @@ sub ui_routes {
 	$r->get('/tools/queue_updates')->over( authenticated => 1, not_ldap => 1 )->to( 'Tools#queue_updates', namespace => $namespace );
 	$r->get('/tools/snapshot_crconfig')->over( authenticated => 1, not_ldap => 1 )->to( 'Tools#snapshot_crconfig', namespace => $namespace );
 	$r->get('/tools/diff_crconfig/:cdn_name')->over( authenticated => 1, not_ldap => 1 )->to( 'Tools#diff_crconfig_iframe', namespace => $namespace );
-	$r->get('/tools/write_crconfig/:cdn_name')->over( authenticated => 1, not_ldap => 1 )->to( 'Tools#write_crconfig', namespace => $namespace );
+	# flash_and_close is a helper for the traffic_ops_golang migration, to allow Go handlers to intercept GUI routes, do their work, then redirect to this to perform the GUI operation
+	$r->get('/tools/flash_and_close/:msg')->over( authenticated => 1, not_ldap => 1 )->to( 'Tools#flash_and_close', namespace => $namespace );
 	$r->get('/tools/invalidate_content/')->over( authenticated => 1, not_ldap => 1 )->to( 'Tools#invalidate_content', namespace => $namespace );
 
 	# -- Topology - CCR Config, rewrote in json
diff --git a/traffic_ops/app/lib/UI/Tools.pm b/traffic_ops/app/lib/UI/Tools.pm
index 3ab70c1..639c9ff 100644
--- a/traffic_ops/app/lib/UI/Tools.pm
+++ b/traffic_ops/app/lib/UI/Tools.pm
@@ -105,23 +105,11 @@ sub diff_crconfig_iframe {
     );
 }
 
-sub write_crconfig {
-    my $self     = shift;
-    my $cdn_name = $self->param('cdn_name');
-    my ( $json, $error ) = UI::Topology::gen_crconfig_json( $self, $cdn_name );
-    if ( defined $error ) {
-        $self->flash( alertmsg => $error );
-    }
-    else {
-        if ( !&is_oper($self) ) {
-            $self->flash( alertmsg => "No can do. Get more privs." );
-        } else {
-            UI::Topology::write_crconfig_json_to_db( $self, $cdn_name, $json );
-            &log( $self, "Snapshot CRConfig created.", "OPER" );
-            $self->flash( alertmsg => "Successfully wrote CRConfig.json!" );
-        }
-    }
-    return $self->redirect_to('/utils/close_fancybox');
+sub flash_and_close {
+    my $self = shift;
+		my $msg = $self->param('msg');
+		$self->flash( alertmsg => $msg );
+		return $self->redirect_to('/utils/close_fancybox');
 }
 
 sub queue_updates {

-- 
To stop receiving notification emails like this one, please contact
dewrich@apache.org.