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 2018/07/09 14:26:39 UTC

[trafficcontrol] branch master updated (4ebe334 -> d02bc82)

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

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


    from 4ebe334  add missing name columns to cachegroup read test
     new 24ab5b1  added option to stream ISO
     new f8d25a8  updated GenIso for TP
     new c9d4d31  added ngFileSaver to app.js
     new 1bba697  WIP - TP stream ISO
     new e14f1a6  added functional iso streaming capability to TP and updated imported modules
     new 7454c5e  code cleanup
     new b262587  added stream iso support for custom generate iso script
     new d02bc82  Added documentation for 'stream' field

The 8 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:
 docs/source/api/v12/iso.rst                        |  2 +
 traffic_ops/app/lib/API/Iso.pm                     | 68 +++++++++++++++++-----
 traffic_ops/app/lib/UI/GenIso.pm                   | 23 +++++---
 traffic_ops/app/templates/gen_iso/geniso.html.ep   | 11 ++++
 traffic_portal/app/src/common/api/ToolsService.js  | 12 +++-
 .../common/modules/form/iso/FormISOController.js   |  9 ++-
 .../src/common/modules/form/iso/form.iso.tpl.html  |  9 +++
 7 files changed, 111 insertions(+), 23 deletions(-)


[trafficcontrol] 08/08: Added documentation for 'stream' field

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

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

commit d02bc823b3edc972f6c21afcb84d5d3af3b6d30f
Author: Jesse Rivas <je...@comcast.com>
AuthorDate: Thu Jul 5 15:39:37 2018 -0600

    Added documentation for 'stream' field
---
 docs/source/api/v12/iso.rst | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/docs/source/api/v12/iso.rst b/docs/source/api/v12/iso.rst
index feb534b..b6255c4 100644
--- a/docs/source/api/v12/iso.rst
+++ b/docs/source/api/v12/iso.rst
@@ -90,6 +90,8 @@ ISO
   +-------------------------------+----------+-------------------------------------------------------------------------------------------------+
   | ``disk``                      | no       | Typical values are "sda"                                                                        |
   +-------------------------------+----------+-------------------------------------------------------------------------------------------------+
+  | ``stream``                    | no       | Valid values are 'yes' or 'no'. If yes, ISO will be streamed.                                   |
+  +-------------------------------+----------+-------------------------------------------------------------------------------------------------+
 
   **Request Example** ::
 


[trafficcontrol] 07/08: added stream iso support for custom generate iso script

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

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

commit b2625878ffeab082d4b8fc528180ea926225c840
Author: Jesse Rivas <je...@comcast.com>
AuthorDate: Thu Jul 5 13:18:02 2018 -0600

    added stream iso support for custom generate iso script
---
 traffic_ops/app/lib/API/Iso.pm | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/traffic_ops/app/lib/API/Iso.pm b/traffic_ops/app/lib/API/Iso.pm
index 856fc02..0f9a84c 100644
--- a/traffic_ops/app/lib/API/Iso.pm
+++ b/traffic_ops/app/lib/API/Iso.pm
@@ -248,7 +248,9 @@ sub generate_iso {
 
 		&log($self, "ISO created [ " . $osversion_dir . " ] for " . $fqdn, "APICHANGE");
 
-		my $iso_url = join("/", "https://" . lc hostfqdn(), $iso_dir, $iso_file_name);
+		# parse out http / https from to.base_url config; use local fqdn for download link
+		my @protocol = split( '://', $config->{'to'}{'base_url'} );
+		my $iso_url = join( '/', $protocol[0] . ':/', lc hostfqdn(), $iso_dir, $iso_file_name );
 
 		$response = {
 			isoName => $iso_file_name,
@@ -256,6 +258,21 @@ sub generate_iso {
 		};
 	} else {
 		my $data = `$cmd`;
+		if ( $type eq 'custom' ) {
+			my $ok = open my $fh, "<$iso_file_path";
+			if (! $ok ) {
+				$self->internal_server_error( { Error => "Error reading $iso_file_path" } );
+				return;
+			}
+
+			# slurp it in..
+			undef $/;
+			$data = <$fh>;
+
+			close $fh;
+			unlink $iso_file_path;
+		}
+
 		$response = {
 			iso => $data,
 			isoName => $iso_file_name,


[trafficcontrol] 05/08: added functional iso streaming capability to TP and updated imported modules

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

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

commit e14f1a68a4bcb463ee5ed3cb234647a51d0ef50e
Author: Jesse Rivas <je...@comcast.com>
AuthorDate: Tue Jul 3 10:40:43 2018 -0600

    added functional iso streaming capability to TP and updated imported modules
---
 traffic_ops/app/lib/API/Iso.pm                     | 20 ++++++++++--------
 traffic_ops/app/lib/UI/GenIso.pm                   |  7 +++++++
 traffic_ops/app/templates/gen_iso/geniso.html.ep   |  2 +-
 traffic_portal/app/src/app.js                      |  1 -
 traffic_portal/app/src/common/api/ToolsService.js  | 11 +++++++++-
 .../common/modules/form/iso/FormISOController.js   | 24 ++--------------------
 traffic_portal/app/src/index.html                  |  3 +--
 traffic_portal/app/src/scripts/shared-libs.js      |  2 --
 traffic_portal/bower.json                          |  3 +--
 traffic_portal/grunt/browserify2.js                |  4 +---
 10 files changed, 35 insertions(+), 42 deletions(-)

diff --git a/traffic_ops/app/lib/API/Iso.pm b/traffic_ops/app/lib/API/Iso.pm
index 6487043..d080f96 100644
--- a/traffic_ops/app/lib/API/Iso.pm
+++ b/traffic_ops/app/lib/API/Iso.pm
@@ -31,7 +31,6 @@ use Mojolicious::Plugin::Config;
 use Data::Validate::IP qw(is_ipv4 is_ipv6);
 use Validate::Tiny ':all';
 use Net::Domain qw(hostfqdn);
-use MIME::Base64;
 
 my $filebasedir             = "/var/www/files";
 my $ksfiles_parm_name       = "kickstart.files.location";
@@ -83,7 +82,16 @@ sub generate {
 	}
 
 	my $response = $self->generate_iso($params);
-	return $self->success( $response, "Generate ISO was successful." );
+
+	if ( index( $params->{stream}, "yes" ) != -1 ) {
+		$self->res->headers->content_type("application/download");
+		$self->res->headers->content_disposition("attachment; filename=\"$response->{name}\"");
+
+		return $self->render( data => $response->{iso} );
+	} else {
+		return $self->success( $response, "Generate ISO was successful." );
+	}
+
 }
 
 sub generate_iso {
@@ -241,7 +249,7 @@ sub generate_iso {
 		&log($self, "ISO created [ " . $osversion_dir . " ] for " . $fqdn, "APICHANGE");
 
 		#my $iso_url = join("/", $config->{'to'}{'base_url'}, $iso_dir, $iso_file_name);
-		my $iso_url = join("/", "https://" + hostfqdn(), $iso_dir, $iso_file_name);
+		my $iso_url = join("/", "https://" . hostfqdn(), $iso_dir, $iso_file_name);
 
 		$response = {
 			isoName => $iso_file_name,
@@ -249,13 +257,9 @@ sub generate_iso {
 		};
 	}
 	else {
-		$self->res->headers->content_type("application/x-iso9660-image");
-		$self->res->headers->content_disposition("attachment; filename=\"$iso_file_name\"");
 		my $data = `$cmd`;
-		#$self->render( data => $data );
-		my $encodedIso = encode_base64($data);
 		$response = {
-			iso => $encodedIso,
+			iso => $data,
 			name => $iso_file_name,
 		};
 	}
diff --git a/traffic_ops/app/lib/UI/GenIso.pm b/traffic_ops/app/lib/UI/GenIso.pm
index ceccc08..0ed3d07 100644
--- a/traffic_ops/app/lib/UI/GenIso.pm
+++ b/traffic_ops/app/lib/UI/GenIso.pm
@@ -107,6 +107,13 @@ sub iso_download {
 	};
 	my $dl_res = &API::Iso::generate_iso($self, $params);
 
+	if ( $params->{stream} eq 'yes' ) {
+		$self->res->headers->content_type("application/download");
+		$self->res->headers->content_disposition("attachment; filename=\"$dl_res->{name}\"");
+
+		return $self->render( data => $dl_res->{iso} );
+	}
+
 	# serverselect
 	$self->flash( message => "Download ISO here" );
 	return $dl_res->{isoName};
diff --git a/traffic_ops/app/templates/gen_iso/geniso.html.ep b/traffic_ops/app/templates/gen_iso/geniso.html.ep
index 82c27f3..9bf64ff 100644
--- a/traffic_ops/app/templates/gen_iso/geniso.html.ep
+++ b/traffic_ops/app/templates/gen_iso/geniso.html.ep
@@ -190,8 +190,8 @@ $(function () {
 									<td>Stream ISO:</td>
 									<td>
 										<select id="stream" name=stream>
-											<option>yes</option>
 											<option>no</option>
+											<option>yes</option>
 										</select>
 									</td>
 									<td>If no, download link will be provided</td>
diff --git a/traffic_portal/app/src/app.js b/traffic_portal/app/src/app.js
index baf69b0..238b2fa 100644
--- a/traffic_portal/app/src/app.js
+++ b/traffic_portal/app/src/app.js
@@ -38,7 +38,6 @@ var trafficPortal = angular.module('trafficPortal', [
         'app.templates',
         'angular-jwt',
         'angular-loading-bar',
-        'ngFileSaver',
 
         // public modules
         require('./modules/public').name,
diff --git a/traffic_portal/app/src/common/api/ToolsService.js b/traffic_portal/app/src/common/api/ToolsService.js
index e0ef325..3195f3b 100644
--- a/traffic_portal/app/src/common/api/ToolsService.js
+++ b/traffic_portal/app/src/common/api/ToolsService.js
@@ -38,10 +38,19 @@ var ToolsService = function($http, $q, Restangular, locationUtils, messageModel,
 	this.generateISO = function(iso) {
 		var request = $q.defer();
 
-		$http.post(ENV.api['root'] + "isos", iso)
+
+		var respType = 'json';
+		if (iso.stream == 'yes') {
+			respType = 'arraybuffer';
+		}
+
+		$http.post(ENV.api['root'] + "isos", iso, { responseType:respType })
 			.then(
 				function(result) {
 					request.resolve(result.data.response);
+					if (iso.stream == 'yes') {
+						download(result.data, "myiso.iso");
+					}
 				},
 				function(fault) {
 					messageModel.setMessages(fault.data.alerts, false);
diff --git a/traffic_portal/app/src/common/modules/form/iso/FormISOController.js b/traffic_portal/app/src/common/modules/form/iso/FormISOController.js
index 9af70d6..7b878ed 100644
--- a/traffic_portal/app/src/common/modules/form/iso/FormISOController.js
+++ b/traffic_portal/app/src/common/modules/form/iso/FormISOController.js
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-var FormISOController = function(servers, osversions, $scope, $anchorScroll, formUtils, toolsService, messageModel, FileSaver, Blob) {
+var FormISOController = function(servers, osversions, $scope, $anchorScroll, formUtils, toolsService, messageModel) {
 
 	$scope.servers = servers;
 
@@ -54,20 +54,6 @@ var FormISOController = function(servers, osversions, $scope, $anchorScroll, for
 				if (iso.stream != 'yes') {
                     messageModel.setMessages([{level: 'success', text: 'ISO created at ' + result.isoURL}], false);
                 }
-                else {
-					//var isoStr = result.iso.replace(/\n/g, "");
-					//var decodedIso = Base64.atob(result.iso);
-					//isoStr += '=';
-					//alert(isoStr.length)
-                    //var decodedIso = $base64.atob(result.iso);
-					var decodedIso = atob(result.iso);
-					var newData = new Blob([decodedIso], { type: 'application/x-iso9660-image' } );
-					//var encodedIso = new Blob([result.iso], { type: 'application/x-iso9660-image' } );
-					//var file = new File([decodedIso], result.name, { type: 'application/x-iso9660-image' } );
-					//alert(newData.size + " : " + encodedIso.size);
-
-					FileSaver.saveAs(newData, result.name);
-				}
 			});
 	};
 
@@ -75,13 +61,7 @@ var FormISOController = function(servers, osversions, $scope, $anchorScroll, for
 
 	$scope.hasPropertyError = formUtils.hasPropertyError;
 
-    // function b64DecodeUnicode(str) {
-    //     return decodeURIComponent(Array.prototype.map.call(atob(str), function(c) {
-    //         return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)
-    //     }).join(''))
-    // }
-
 };
 
-FormISOController.$inject = ['servers', 'osversions', '$scope', '$anchorScroll', 'formUtils', 'toolsService', 'messageModel', 'FileSaver', 'Blob'];
+FormISOController.$inject = ['servers', 'osversions', '$scope', '$anchorScroll', 'formUtils', 'toolsService', 'messageModel'];
 module.exports = FormISOController;
diff --git a/traffic_portal/app/src/index.html b/traffic_portal/app/src/index.html
index ebc373d..7d768a6 100644
--- a/traffic_portal/app/src/index.html
+++ b/traffic_portal/app/src/index.html
@@ -54,8 +54,7 @@ under the License.
         <script src="resources/assets/js/underscore-min_1.8.3.js"></script>
         <script src="resources/assets/js/jquery.dataTables.min_1.10.16.js"></script>
 
-        <script src="resources/assets/js/base64.js"></script>
-        <script src="resources/assets/js/base64js.min.js"></script>
+        <script src="https://cdnjs.cloudflare.com/ajax/libs/downloadjs/1.4.8/download.js"></script>
 
     </body>
 
diff --git a/traffic_portal/app/src/scripts/shared-libs.js b/traffic_portal/app/src/scripts/shared-libs.js
index 932704c..06c68f2 100644
--- a/traffic_portal/app/src/scripts/shared-libs.js
+++ b/traffic_portal/app/src/scripts/shared-libs.js
@@ -28,7 +28,6 @@ require('angular-resource');
 require('angular-route');
 require('angular-sanitize');
 require('angular-ui-router');
-require('angular-file-saver');
 
 // angular jwt
 require('angular-jwt');
@@ -57,4 +56,3 @@ require('jquery-flot-axislabels');
 // misc
 require('es5-shim');
 require('json3');
-require('js-base64');
\ No newline at end of file
diff --git a/traffic_portal/bower.json b/traffic_portal/bower.json
index 929a219..ec23260 100755
--- a/traffic_portal/bower.json
+++ b/traffic_portal/bower.json
@@ -18,7 +18,6 @@
         "font-awesome": "4.5.0",
         "jquery": "2.0.0",
         "json3": "3.3.2",
-        "restangular": "1.5.2",
-        "file-saver": "1.3.8"
+        "restangular": "1.5.2"
     }
 }
diff --git a/traffic_portal/grunt/browserify2.js b/traffic_portal/grunt/browserify2.js
index 4b10d50..2528df4 100644
--- a/traffic_portal/grunt/browserify2.js
+++ b/traffic_portal/grunt/browserify2.js
@@ -103,9 +103,7 @@ module.exports = {
                                 'es5-shim/es5-shim.js',
                                 'jquery/jquery.js',
                                 'json3/lib/json3.js',
-                                'restangular/dist/restangular.js',
-                                'angular-file-saver/dist/angular-file-saver.bundle.js',
-                                'js-base64/base64.js'
+                                'restangular/dist/restangular.js'
                             ]
                     },
                     {


[trafficcontrol] 02/08: updated GenIso for TP

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

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

commit f8d25a8c1b872aeb80beb6ee3ad16a19cf4d087b
Author: Jesse Rivas <je...@comcast.com>
AuthorDate: Tue Jun 19 08:19:15 2018 -0600

    updated GenIso for TP
---
 traffic_ops/app/lib/API/Iso.pm   |  6 +++-
 traffic_ops/app/lib/UI/GenIso.pm | 71 +++++++++++++++++++---------------------
 2 files changed, 38 insertions(+), 39 deletions(-)

diff --git a/traffic_ops/app/lib/API/Iso.pm b/traffic_ops/app/lib/API/Iso.pm
index fc30171..b16d966 100644
--- a/traffic_ops/app/lib/API/Iso.pm
+++ b/traffic_ops/app/lib/API/Iso.pm
@@ -231,7 +231,7 @@ sub generate_iso {
 
 	my $response = {};
 
-	if ( $stream eq 'no' ) {
+	if ( $stream ne 'yes' ) {
 		$self->app->log->info("Writing ISO: " . $iso_file_path);
 		my $output = `$cmd 2>&1` || die("Error executing $cmd:");
 		$self->app->log->info($output);
@@ -250,6 +250,10 @@ sub generate_iso {
 		$self->res->headers->content_disposition("attachment; filename=\"$iso_file_name\"");
 		my $data = `$cmd`;
 		$self->render( data => $data );
+		$response = {
+			iso => $data,
+			name => $iso_file_name,
+		};
 	}
 	return $response;
 }
diff --git a/traffic_ops/app/lib/UI/GenIso.pm b/traffic_ops/app/lib/UI/GenIso.pm
index dd81333..ceccc08 100644
--- a/traffic_ops/app/lib/UI/GenIso.pm
+++ b/traffic_ops/app/lib/UI/GenIso.pm
@@ -38,51 +38,46 @@ my $install_cfg = "ks_scripts";
 sub geniso {
 	my $self = shift;
 
-	# if 'stream' is set to yes, skip to /iso_download endpoint
-	if ( $self->param('stream') eq 'yes' ) {
-		$self->iso_download();
+	&navbarpage($self);
+	my %serverselect;
+	my $rs_server = $self->db->resultset('Server')->search(undef,
+		{ columns => [ qw/id host_name domain_name/ ], orderby => "host_name" });
+
+	while (my $row = $rs_server->next) {
+		my $fqdn = $row->host_name . "." . $row->domain_name;
+		$serverselect{$fqdn} = $row->id;
 	}
-	else {
-
-		&navbarpage($self);
-		my %serverselect;
-		my $rs_server = $self->db->resultset('Server')->search(undef,
-			{ columns => [ qw/id host_name domain_name/ ], orderby => "host_name" });
-
-		while (my $row = $rs_server->next) {
-			my $fqdn = $row->host_name . "." . $row->domain_name;
-			$serverselect{$fqdn} = $row->id;
-		}
 
-		my $osversionsdir;
-		# my $ksdir = $self->db->resultset('Parameter')->search( {  and => [ name => $ksfiles_parm_name, config_file => $ksfiles_configfile_name ] } )->get_column('value')->single();
-		my $ksdir = $self->db->resultset('Parameter')->search({ -and =>
-			[ name => $ksfiles_parm_name, config_file => $ksfiles_configfile_name ] })->get_column('value')->single();
+	my $osversionsdir;
+	# my $ksdir = $self->db->resultset('Parameter')->search( {  and => [ name => $ksfiles_parm_name, config_file => $ksfiles_configfile_name ] } )->get_column('value')->single();
+	my $ksdir = $self->db->resultset('Parameter')->search({ -and =>
+		[ name => $ksfiles_parm_name, config_file => $ksfiles_configfile_name ] })->get_column('value')->single();
 
-		if (defined $ksdir && $ksdir ne "") {
-			$osversionsdir = $ksdir;
-		}
-		else {
-			$osversionsdir = $filebasedir;
-		}
+	if (defined $ksdir && $ksdir ne "") {
+		$osversionsdir = $ksdir;
+	}
+	else {
+		$osversionsdir = $filebasedir;
+	}
 
-		my %osversions;
+	my %osversions;
 
-		{
-			open(CFG, "<$osversionsdir/osversions.cfg") || die("$osversionsdir/osversions.cfg:$!");
-			local $/;
-			eval <CFG>;
-			close CFG;
-		}
+	{
+		open(CFG, "<$osversionsdir/osversions.cfg") || die("$osversionsdir/osversions.cfg:$!");
+		local $/;
+		eval <CFG>;
+		close CFG;
+	}
 
-		$self->stash(
-			serverselect => \%serverselect,
-			osversions   => \%osversions,
-		);
+	$self->stash(
+		serverselect => \%serverselect,
+		osversions   => \%osversions,
+	);
 
-		my $hostname = $self->param('hostname');
-		if (defined($hostname)) {
-			my $iso_file_name = $self->iso_download();
+	my $hostname = $self->param('hostname');
+	if (defined($hostname)) {
+		my $iso_file_name = $self->iso_download();
+		if ( $self->param('stream') ne 'yes' ) {
 			$self->stash(iso_file_name => $iso_file_name);
 			return $self->render('gen_iso/geniso');
 		}


[trafficcontrol] 04/08: WIP - TP stream ISO

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

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

commit 1bba6972c9fa80ab92c704e0e382fbe5740e2d11
Author: Jesse Rivas <je...@comcast.com>
AuthorDate: Tue Jun 26 12:46:50 2018 -0600

    WIP - TP stream ISO
---
 traffic_ops/app/lib/API/Iso.pm                     | 12 ++++++---
 .../common/modules/form/iso/FormISOController.js   | 31 +++++++++++++++++++---
 .../src/common/modules/form/iso/form.iso.tpl.html  | 11 ++++++++
 traffic_portal/app/src/index.html                  |  3 +++
 traffic_portal/app/src/scripts/shared-libs.js      |  2 ++
 traffic_portal/bower.json                          |  3 ++-
 traffic_portal/grunt/browserify2.js                |  4 ++-
 traffic_portal/package.json                        |  4 +++
 8 files changed, 60 insertions(+), 10 deletions(-)

diff --git a/traffic_ops/app/lib/API/Iso.pm b/traffic_ops/app/lib/API/Iso.pm
index b16d966..6487043 100644
--- a/traffic_ops/app/lib/API/Iso.pm
+++ b/traffic_ops/app/lib/API/Iso.pm
@@ -30,6 +30,8 @@ use Common::ReturnCodes qw(SUCCESS ERROR);
 use Mojolicious::Plugin::Config;
 use Data::Validate::IP qw(is_ipv4 is_ipv6);
 use Validate::Tiny ':all';
+use Net::Domain qw(hostfqdn);
+use MIME::Base64;
 
 my $filebasedir             = "/var/www/files";
 my $ksfiles_parm_name       = "kickstart.files.location";
@@ -238,7 +240,8 @@ sub generate_iso {
 
 		&log($self, "ISO created [ " . $osversion_dir . " ] for " . $fqdn, "APICHANGE");
 
-		my $iso_url = join("/", $config->{'to'}{'base_url'}, $iso_dir, $iso_file_name);
+		#my $iso_url = join("/", $config->{'to'}{'base_url'}, $iso_dir, $iso_file_name);
+		my $iso_url = join("/", "https://" + hostfqdn(), $iso_dir, $iso_file_name);
 
 		$response = {
 			isoName => $iso_file_name,
@@ -246,12 +249,13 @@ sub generate_iso {
 		};
 	}
 	else {
-		$self->res->headers->content_type("application/download");
+		$self->res->headers->content_type("application/x-iso9660-image");
 		$self->res->headers->content_disposition("attachment; filename=\"$iso_file_name\"");
 		my $data = `$cmd`;
-		$self->render( data => $data );
+		#$self->render( data => $data );
+		my $encodedIso = encode_base64($data);
 		$response = {
-			iso => $data,
+			iso => $encodedIso,
 			name => $iso_file_name,
 		};
 	}
diff --git a/traffic_portal/app/src/common/modules/form/iso/FormISOController.js b/traffic_portal/app/src/common/modules/form/iso/FormISOController.js
index 382ddf8..9af70d6 100644
--- a/traffic_portal/app/src/common/modules/form/iso/FormISOController.js
+++ b/traffic_portal/app/src/common/modules/form/iso/FormISOController.js
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-var FormISOController = function(servers, osversions, $scope, $anchorScroll, formUtils, toolsService, messageModel) {
+var FormISOController = function(servers, osversions, $scope, $anchorScroll, formUtils, toolsService, messageModel, FileSaver, Blob) {
 
 	$scope.servers = servers;
 
@@ -31,7 +31,8 @@ var FormISOController = function(servers, osversions, $scope, $anchorScroll, for
 	];
 
 	$scope.iso = {
-		dhcp: 'no'
+		dhcp: 'no',
+		stream: 'no'
 	};
 
 	$scope.isDHCP = function() {
@@ -50,7 +51,23 @@ var FormISOController = function(servers, osversions, $scope, $anchorScroll, for
 		toolsService.generateISO(iso)
 			.then(function(result) {
 				$anchorScroll(); // scrolls window to top
-				messageModel.setMessages([ { level: 'success', text: 'ISO created at ' + result.isoURL } ], false);
+				if (iso.stream != 'yes') {
+                    messageModel.setMessages([{level: 'success', text: 'ISO created at ' + result.isoURL}], false);
+                }
+                else {
+					//var isoStr = result.iso.replace(/\n/g, "");
+					//var decodedIso = Base64.atob(result.iso);
+					//isoStr += '=';
+					//alert(isoStr.length)
+                    //var decodedIso = $base64.atob(result.iso);
+					var decodedIso = atob(result.iso);
+					var newData = new Blob([decodedIso], { type: 'application/x-iso9660-image' } );
+					//var encodedIso = new Blob([result.iso], { type: 'application/x-iso9660-image' } );
+					//var file = new File([decodedIso], result.name, { type: 'application/x-iso9660-image' } );
+					//alert(newData.size + " : " + encodedIso.size);
+
+					FileSaver.saveAs(newData, result.name);
+				}
 			});
 	};
 
@@ -58,7 +75,13 @@ var FormISOController = function(servers, osversions, $scope, $anchorScroll, for
 
 	$scope.hasPropertyError = formUtils.hasPropertyError;
 
+    // function b64DecodeUnicode(str) {
+    //     return decodeURIComponent(Array.prototype.map.call(atob(str), function(c) {
+    //         return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)
+    //     }).join(''))
+    // }
+
 };
 
-FormISOController.$inject = ['servers', 'osversions', '$scope', '$anchorScroll', 'formUtils', 'toolsService', 'messageModel'];
+FormISOController.$inject = ['servers', 'osversions', '$scope', '$anchorScroll', 'formUtils', 'toolsService', 'messageModel', 'FileSaver', 'Blob'];
 module.exports = FormISOController;
diff --git a/traffic_portal/app/src/common/modules/form/iso/form.iso.tpl.html b/traffic_portal/app/src/common/modules/form/iso/form.iso.tpl.html
index 015325e..5b15ea6 100644
--- a/traffic_portal/app/src/common/modules/form/iso/form.iso.tpl.html
+++ b/traffic_portal/app/src/common/modules/form/iso/form.iso.tpl.html
@@ -189,6 +189,17 @@ under the License.
                     <span ng-show="hasError(isoForm.mgmtInterface)" class="form-control-feedback"><i class="fa fa-times"></i></span>
                 </div>
             </div>
+
+            <div class="form-group" ng-class="{'has-error': hasError(isoForm.stream), 'has-feedback': hasError(isoForm.stream)}">
+                <label class="control-label col-md-2 col-sm-2 col-xs-12">Stream ISO *</label>
+                <div class="col-md-10 col-sm-10 col-xs-12">
+                    <select name="stream" class="form-control" ng-model="iso.stream" ng-options="x.value as x.label for x in falseTrue" required>
+                        <option value="">Select...</option>
+                    </select>
+                    <small class="input-error" ng-show="hasPropertyError(isoForm.stream, 'required')">Required</small>
+                </div>
+            </div>
+
             <div class="modal-footer">
                 <button type="button" class="btn btn-success" ng-disabled="isoForm.$pristine || isoForm.$invalid" ng-click="generate(iso)">Generate ISO</button>
             </div>
diff --git a/traffic_portal/app/src/index.html b/traffic_portal/app/src/index.html
index fc5363b..ebc373d 100644
--- a/traffic_portal/app/src/index.html
+++ b/traffic_portal/app/src/index.html
@@ -54,6 +54,9 @@ under the License.
         <script src="resources/assets/js/underscore-min_1.8.3.js"></script>
         <script src="resources/assets/js/jquery.dataTables.min_1.10.16.js"></script>
 
+        <script src="resources/assets/js/base64.js"></script>
+        <script src="resources/assets/js/base64js.min.js"></script>
+
     </body>
 
 </html>
diff --git a/traffic_portal/app/src/scripts/shared-libs.js b/traffic_portal/app/src/scripts/shared-libs.js
index 06c68f2..932704c 100644
--- a/traffic_portal/app/src/scripts/shared-libs.js
+++ b/traffic_portal/app/src/scripts/shared-libs.js
@@ -28,6 +28,7 @@ require('angular-resource');
 require('angular-route');
 require('angular-sanitize');
 require('angular-ui-router');
+require('angular-file-saver');
 
 // angular jwt
 require('angular-jwt');
@@ -56,3 +57,4 @@ require('jquery-flot-axislabels');
 // misc
 require('es5-shim');
 require('json3');
+require('js-base64');
\ No newline at end of file
diff --git a/traffic_portal/bower.json b/traffic_portal/bower.json
index ec23260..929a219 100755
--- a/traffic_portal/bower.json
+++ b/traffic_portal/bower.json
@@ -18,6 +18,7 @@
         "font-awesome": "4.5.0",
         "jquery": "2.0.0",
         "json3": "3.3.2",
-        "restangular": "1.5.2"
+        "restangular": "1.5.2",
+        "file-saver": "1.3.8"
     }
 }
diff --git a/traffic_portal/grunt/browserify2.js b/traffic_portal/grunt/browserify2.js
index 2528df4..4b10d50 100644
--- a/traffic_portal/grunt/browserify2.js
+++ b/traffic_portal/grunt/browserify2.js
@@ -103,7 +103,9 @@ module.exports = {
                                 'es5-shim/es5-shim.js',
                                 'jquery/jquery.js',
                                 'json3/lib/json3.js',
-                                'restangular/dist/restangular.js'
+                                'restangular/dist/restangular.js',
+                                'angular-file-saver/dist/angular-file-saver.bundle.js',
+                                'js-base64/base64.js'
                             ]
                     },
                     {
diff --git a/traffic_portal/package.json b/traffic_portal/package.json
index 6f51e0e..d2038de 100755
--- a/traffic_portal/package.json
+++ b/traffic_portal/package.json
@@ -33,5 +33,9 @@
   },
   "engines": {
     "node": "0.11.14"
+  },
+  "dependencies": {
+    "base64-js": "^1.3.0",
+    "js-base64": "^2.4.5"
   }
 }


[trafficcontrol] 01/08: added option to stream ISO

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

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

commit 24ab5b1998651277119f7ae691f10f2835ef72a1
Author: Jesse Rivas <je...@comcast.com>
AuthorDate: Mon Jun 11 09:42:28 2018 -0600

    added option to stream ISO
---
 traffic_ops/app/lib/API/Iso.pm                   | 33 ++++++---
 traffic_ops/app/lib/UI/GenIso.pm                 | 88 +++++++++++++-----------
 traffic_ops/app/templates/gen_iso/geniso.html.ep | 11 +++
 3 files changed, 84 insertions(+), 48 deletions(-)

diff --git a/traffic_ops/app/lib/API/Iso.pm b/traffic_ops/app/lib/API/Iso.pm
index c42cef7..fc30171 100644
--- a/traffic_ops/app/lib/API/Iso.pm
+++ b/traffic_ops/app/lib/API/Iso.pm
@@ -105,6 +105,7 @@ sub generate_iso {
 	my $mgmt_ip_netmask = $params->{mgmtIpNetmask};
 	my $mgmt_ip_gateway = $params->{mgmtIpGateway};
 	my $mgmt_interface 	= $params->{mgmtInterface};
+	my $stream          = $params->{stream};
 
 	#The API has hostname and domainName, the UI does not
 	my $fqdn = $hostname;
@@ -203,6 +204,11 @@ sub generate_iso {
 
 	my $cmd =
 		"mkisofs -o $iso_file_path -joliet-long -input-charset utf-8 -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T $dir";
+
+	if ( $stream eq 'yes' ) {
+		$cmd = "mkisofs -joliet-long -input-charset utf-8 -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T $dir";
+	}
+
 	my $type = "default";
 	my $custom_cmd = sprintf( "%s/%s", $dir, "generate" );
 
@@ -223,19 +229,28 @@ sub generate_iso {
 	print STUF "$cmd\n";
 	close STUF;
 
-	$self->app->log->info( "Writing ISO: " . $iso_file_path );
-	my $output = `$cmd 2>&1` || die("Error executing $cmd:");
-	$self->app->log->info($output);
+	my $response = {};
 
-	&log( $self, "ISO created [ " . $osversion_dir . " ] for " . $fqdn, "APICHANGE" );
+	if ( $stream eq 'no' ) {
+		$self->app->log->info("Writing ISO: " . $iso_file_path);
+		my $output = `$cmd 2>&1` || die("Error executing $cmd:");
+		$self->app->log->info($output);
 
-	my $iso_url = join( "/", $config->{'to'}{'base_url'}, $iso_dir, $iso_file_name );
+		&log($self, "ISO created [ " . $osversion_dir . " ] for " . $fqdn, "APICHANGE");
 
-	my $response = {
-		isoName => $iso_file_name,
-		isoURL => $iso_url,
-	};
+		my $iso_url = join("/", $config->{'to'}{'base_url'}, $iso_dir, $iso_file_name);
 
+		$response = {
+			isoName => $iso_file_name,
+			isoURL  => $iso_url,
+		};
+	}
+	else {
+		$self->res->headers->content_type("application/download");
+		$self->res->headers->content_disposition("attachment; filename=\"$iso_file_name\"");
+		my $data = `$cmd`;
+		$self->render( data => $data );
+	}
 	return $response;
 }
 
diff --git a/traffic_ops/app/lib/UI/GenIso.pm b/traffic_ops/app/lib/UI/GenIso.pm
index 53a11df..dd81333 100644
--- a/traffic_ops/app/lib/UI/GenIso.pm
+++ b/traffic_ops/app/lib/UI/GenIso.pm
@@ -38,45 +38,54 @@ my $install_cfg = "ks_scripts";
 sub geniso {
 	my $self = shift;
 
-	&navbarpage($self);
-	my %serverselect;
-	my $rs_server = $self->db->resultset('Server')->search( undef, { columns => [qw/id host_name domain_name/], orderby => "host_name" } );
-
-	while ( my $row = $rs_server->next ) {
-		my $fqdn = $row->host_name . "." . $row->domain_name;
-		$serverselect{$fqdn} = $row->id;
-	}
-
-
-	my $osversionsdir;
-	# my $ksdir = $self->db->resultset('Parameter')->search( {  and => [ name => $ksfiles_parm_name, config_file => $ksfiles_configfile_name ] } )->get_column('value')->single();
-	my $ksdir = $self->db->resultset('Parameter')->search( { -and => [ name => $ksfiles_parm_name, config_file => $ksfiles_configfile_name ] } )->get_column('value')->single();
-
-	if (defined $ksdir && $ksdir ne "") {
-		$osversionsdir = $ksdir;
-	} else {
-		$osversionsdir = $filebasedir;
+	# if 'stream' is set to yes, skip to /iso_download endpoint
+	if ( $self->param('stream') eq 'yes' ) {
+		$self->iso_download();
 	}
-
-	my %osversions;
-
-	{
-		open(CFG, "<$osversionsdir/osversions.cfg") || die("$osversionsdir/osversions.cfg:$!");
-		local $/;
-		eval <CFG>;
-		close CFG;
-	}
-
-	$self->stash(
-		serverselect => \%serverselect,
-		osversions   => \%osversions,
-	);
-
-	my $hostname = $self->param('hostname');
-	if (defined($hostname)){
-		my $iso_file_name = $self->iso_download();
-		$self->stash( iso_file_name => $iso_file_name);
-		return $self->render('gen_iso/geniso');
+	else {
+
+		&navbarpage($self);
+		my %serverselect;
+		my $rs_server = $self->db->resultset('Server')->search(undef,
+			{ columns => [ qw/id host_name domain_name/ ], orderby => "host_name" });
+
+		while (my $row = $rs_server->next) {
+			my $fqdn = $row->host_name . "." . $row->domain_name;
+			$serverselect{$fqdn} = $row->id;
+		}
+
+		my $osversionsdir;
+		# my $ksdir = $self->db->resultset('Parameter')->search( {  and => [ name => $ksfiles_parm_name, config_file => $ksfiles_configfile_name ] } )->get_column('value')->single();
+		my $ksdir = $self->db->resultset('Parameter')->search({ -and =>
+			[ name => $ksfiles_parm_name, config_file => $ksfiles_configfile_name ] })->get_column('value')->single();
+
+		if (defined $ksdir && $ksdir ne "") {
+			$osversionsdir = $ksdir;
+		}
+		else {
+			$osversionsdir = $filebasedir;
+		}
+
+		my %osversions;
+
+		{
+			open(CFG, "<$osversionsdir/osversions.cfg") || die("$osversionsdir/osversions.cfg:$!");
+			local $/;
+			eval <CFG>;
+			close CFG;
+		}
+
+		$self->stash(
+			serverselect => \%serverselect,
+			osversions   => \%osversions,
+		);
+
+		my $hostname = $self->param('hostname');
+		if (defined($hostname)) {
+			my $iso_file_name = $self->iso_download();
+			$self->stash(iso_file_name => $iso_file_name);
+			return $self->render('gen_iso/geniso');
+		}
 	}
 }
 
@@ -98,7 +107,8 @@ sub iso_download {
 		mgmtIpAddress => $self->param('mgmt_ip_address'),
 		mgmtIpNetmask => $self->param('mgmt_ip_netmask'),
 		mgmtIpGateway => $self->param('mgmt_ip_gateway'),
-		mgmtInterface => $self->param('mgmt_interface')
+		mgmtInterface => $self->param('mgmt_interface'),
+		stream => $self->param('stream')
 	};
 	my $dl_res = &API::Iso::generate_iso($self, $params);
 
diff --git a/traffic_ops/app/templates/gen_iso/geniso.html.ep b/traffic_ops/app/templates/gen_iso/geniso.html.ep
index 6cf4dc7..82c27f3 100644
--- a/traffic_ops/app/templates/gen_iso/geniso.html.ep
+++ b/traffic_ops/app/templates/gen_iso/geniso.html.ep
@@ -66,6 +66,7 @@ $(function () {
 												$("#mgmt_ip_netmask").val(newvalues.response[0].mgmtIpNetmask);
 												$("#mgmt_ip_gateway").val(newvalues.response[0].mgmtIpGateway);
 												$("#mgmt_interface").val(newvalues.response[0].mgmtInterface);
+												$("#stream").val("yes");
 											}
 										);
 									});
@@ -185,6 +186,16 @@ $(function () {
 									<td><input type="text" size=45 id="ondisk" name="ondisk"/ value="sda"></td>
 									<td>Optional. Typical values are "sda".</td>
 								</tr>
+								<tr>
+									<td>Stream ISO:</td>
+									<td>
+										<select id="stream" name=stream>
+											<option>yes</option>
+											<option>no</option>
+										</select>
+									</td>
+									<td>If no, download link will be provided</td>
+								</tr>
 							</table>
 							<input class="button" type="submit" value="Generate ISO"/>
 						</form>


[trafficcontrol] 06/08: code cleanup

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

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

commit 7454c5ed8762c75aed1eede2f8d3c1089b995e1d
Author: Jesse Rivas <je...@comcast.com>
AuthorDate: Tue Jul 3 11:03:16 2018 -0600

    code cleanup
---
 traffic_ops/app/lib/API/Iso.pm                     | 12 +++++------
 traffic_ops/app/lib/UI/GenIso.pm                   | 23 ++++++++++------------
 traffic_ops/app/templates/gen_iso/geniso.html.ep   |  2 +-
 traffic_portal/app/src/common/api/ToolsService.js  |  3 ++-
 .../common/modules/form/iso/FormISOController.js   |  6 ++++--
 .../src/common/modules/form/iso/form.iso.tpl.html  |  2 --
 traffic_portal/app/src/index.html                  |  2 --
 traffic_portal/package.json                        |  4 ----
 8 files changed, 22 insertions(+), 32 deletions(-)

diff --git a/traffic_ops/app/lib/API/Iso.pm b/traffic_ops/app/lib/API/Iso.pm
index d080f96..856fc02 100644
--- a/traffic_ops/app/lib/API/Iso.pm
+++ b/traffic_ops/app/lib/API/Iso.pm
@@ -83,9 +83,9 @@ sub generate {
 
 	my $response = $self->generate_iso($params);
 
-	if ( index( $params->{stream}, "yes" ) != -1 ) {
+	if ( $params->{stream} eq 'yes' ) {
 		$self->res->headers->content_type("application/download");
-		$self->res->headers->content_disposition("attachment; filename=\"$response->{name}\"");
+		$self->res->headers->content_disposition("attachment; filename=\"$response->{isoName}\"");
 
 		return $self->render( data => $response->{iso} );
 	} else {
@@ -248,19 +248,17 @@ sub generate_iso {
 
 		&log($self, "ISO created [ " . $osversion_dir . " ] for " . $fqdn, "APICHANGE");
 
-		#my $iso_url = join("/", $config->{'to'}{'base_url'}, $iso_dir, $iso_file_name);
-		my $iso_url = join("/", "https://" . hostfqdn(), $iso_dir, $iso_file_name);
+		my $iso_url = join("/", "https://" . lc hostfqdn(), $iso_dir, $iso_file_name);
 
 		$response = {
 			isoName => $iso_file_name,
 			isoURL  => $iso_url,
 		};
-	}
-	else {
+	} else {
 		my $data = `$cmd`;
 		$response = {
 			iso => $data,
-			name => $iso_file_name,
+			isoName => $iso_file_name,
 		};
 	}
 	return $response;
diff --git a/traffic_ops/app/lib/UI/GenIso.pm b/traffic_ops/app/lib/UI/GenIso.pm
index 0ed3d07..995132a 100644
--- a/traffic_ops/app/lib/UI/GenIso.pm
+++ b/traffic_ops/app/lib/UI/GenIso.pm
@@ -40,23 +40,20 @@ sub geniso {
 
 	&navbarpage($self);
 	my %serverselect;
-	my $rs_server = $self->db->resultset('Server')->search(undef,
-		{ columns => [ qw/id host_name domain_name/ ], orderby => "host_name" });
+	my $rs_server = $self->db->resultset('Server')->search( undef, { columns => [qw/id host_name domain_name/], orderby => "host_name" } );
 
-	while (my $row = $rs_server->next) {
+	while ( my $row = $rs_server->next ) {
 		my $fqdn = $row->host_name . "." . $row->domain_name;
 		$serverselect{$fqdn} = $row->id;
 	}
 
 	my $osversionsdir;
 	# my $ksdir = $self->db->resultset('Parameter')->search( {  and => [ name => $ksfiles_parm_name, config_file => $ksfiles_configfile_name ] } )->get_column('value')->single();
-	my $ksdir = $self->db->resultset('Parameter')->search({ -and =>
-		[ name => $ksfiles_parm_name, config_file => $ksfiles_configfile_name ] })->get_column('value')->single();
+	my $ksdir = $self->db->resultset('Parameter')->search( { -and => [ name => $ksfiles_parm_name, config_file => $ksfiles_configfile_name ] } )->get_column('value')->single();
 
 	if (defined $ksdir && $ksdir ne "") {
 		$osversionsdir = $ksdir;
-	}
-	else {
+	} else {
 		$osversionsdir = $filebasedir;
 	}
 
@@ -75,7 +72,7 @@ sub geniso {
 	);
 
 	my $hostname = $self->param('hostname');
-	if (defined($hostname)) {
+	if (defined($hostname)){
 		my $iso_file_name = $self->iso_download();
 		if ( $self->param('stream') ne 'yes' ) {
 			$self->stash(iso_file_name => $iso_file_name);
@@ -109,14 +106,14 @@ sub iso_download {
 
 	if ( $params->{stream} eq 'yes' ) {
 		$self->res->headers->content_type("application/download");
-		$self->res->headers->content_disposition("attachment; filename=\"$dl_res->{name}\"");
+		$self->res->headers->content_disposition("attachment; filename=\"$dl_res->{isoName}\"");
 
 		return $self->render( data => $dl_res->{iso} );
+	} else {
+		# serverselect
+		$self->flash(message => "Download ISO here");
+		return $dl_res->{isoName};
 	}
-
-	# serverselect
-	$self->flash( message => "Download ISO here" );
-	return $dl_res->{isoName};
 }
 
 sub find_conf_path {
diff --git a/traffic_ops/app/templates/gen_iso/geniso.html.ep b/traffic_ops/app/templates/gen_iso/geniso.html.ep
index 9bf64ff..d3966b4 100644
--- a/traffic_ops/app/templates/gen_iso/geniso.html.ep
+++ b/traffic_ops/app/templates/gen_iso/geniso.html.ep
@@ -66,7 +66,7 @@ $(function () {
 												$("#mgmt_ip_netmask").val(newvalues.response[0].mgmtIpNetmask);
 												$("#mgmt_ip_gateway").val(newvalues.response[0].mgmtIpGateway);
 												$("#mgmt_interface").val(newvalues.response[0].mgmtInterface);
-												$("#stream").val("yes");
+												$("#stream").val("no");
 											}
 										);
 									});
diff --git a/traffic_portal/app/src/common/api/ToolsService.js b/traffic_portal/app/src/common/api/ToolsService.js
index 3195f3b..2ceb61c 100644
--- a/traffic_portal/app/src/common/api/ToolsService.js
+++ b/traffic_portal/app/src/common/api/ToolsService.js
@@ -49,7 +49,8 @@ var ToolsService = function($http, $q, Restangular, locationUtils, messageModel,
 				function(result) {
 					request.resolve(result.data.response);
 					if (iso.stream == 'yes') {
-						download(result.data, "myiso.iso");
+						var isoName = iso.hostName + "." + iso.domainName + "-" + iso.osversionDir + ".iso";
+						download(result.data, isoName);
 					}
 				},
 				function(fault) {
diff --git a/traffic_portal/app/src/common/modules/form/iso/FormISOController.js b/traffic_portal/app/src/common/modules/form/iso/FormISOController.js
index 7b878ed..57b09f0 100644
--- a/traffic_portal/app/src/common/modules/form/iso/FormISOController.js
+++ b/traffic_portal/app/src/common/modules/form/iso/FormISOController.js
@@ -52,8 +52,10 @@ var FormISOController = function(servers, osversions, $scope, $anchorScroll, for
 			.then(function(result) {
 				$anchorScroll(); // scrolls window to top
 				if (iso.stream != 'yes') {
-                    messageModel.setMessages([{level: 'success', text: 'ISO created at ' + result.isoURL}], false);
-                }
+					messageModel.setMessages([{level: 'success', text: 'ISO created at ' + result.isoURL}], false);
+				} else {
+					messageModel.setMessages([{level: 'success', text: 'ISO successfully downloaded'}], false);
+				}
 			});
 	};
 
diff --git a/traffic_portal/app/src/common/modules/form/iso/form.iso.tpl.html b/traffic_portal/app/src/common/modules/form/iso/form.iso.tpl.html
index 5b15ea6..285dbec 100644
--- a/traffic_portal/app/src/common/modules/form/iso/form.iso.tpl.html
+++ b/traffic_portal/app/src/common/modules/form/iso/form.iso.tpl.html
@@ -189,7 +189,6 @@ under the License.
                     <span ng-show="hasError(isoForm.mgmtInterface)" class="form-control-feedback"><i class="fa fa-times"></i></span>
                 </div>
             </div>
-
             <div class="form-group" ng-class="{'has-error': hasError(isoForm.stream), 'has-feedback': hasError(isoForm.stream)}">
                 <label class="control-label col-md-2 col-sm-2 col-xs-12">Stream ISO *</label>
                 <div class="col-md-10 col-sm-10 col-xs-12">
@@ -199,7 +198,6 @@ under the License.
                     <small class="input-error" ng-show="hasPropertyError(isoForm.stream, 'required')">Required</small>
                 </div>
             </div>
-
             <div class="modal-footer">
                 <button type="button" class="btn btn-success" ng-disabled="isoForm.$pristine || isoForm.$invalid" ng-click="generate(iso)">Generate ISO</button>
             </div>
diff --git a/traffic_portal/app/src/index.html b/traffic_portal/app/src/index.html
index 7d768a6..fc5363b 100644
--- a/traffic_portal/app/src/index.html
+++ b/traffic_portal/app/src/index.html
@@ -54,8 +54,6 @@ under the License.
         <script src="resources/assets/js/underscore-min_1.8.3.js"></script>
         <script src="resources/assets/js/jquery.dataTables.min_1.10.16.js"></script>
 
-        <script src="https://cdnjs.cloudflare.com/ajax/libs/downloadjs/1.4.8/download.js"></script>
-
     </body>
 
 </html>
diff --git a/traffic_portal/package.json b/traffic_portal/package.json
index d2038de..6f51e0e 100755
--- a/traffic_portal/package.json
+++ b/traffic_portal/package.json
@@ -33,9 +33,5 @@
   },
   "engines": {
     "node": "0.11.14"
-  },
-  "dependencies": {
-    "base64-js": "^1.3.0",
-    "js-base64": "^2.4.5"
   }
 }


[trafficcontrol] 03/08: added ngFileSaver to app.js

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

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

commit c9d4d314e7562a0fa2a1ede685bcbbc309df30a2
Author: Jesse Rivas <je...@comcast.com>
AuthorDate: Tue Jun 19 14:45:25 2018 -0600

    added ngFileSaver to app.js
---
 traffic_portal/app/src/app.js | 1 +
 1 file changed, 1 insertion(+)

diff --git a/traffic_portal/app/src/app.js b/traffic_portal/app/src/app.js
index 238b2fa..baf69b0 100644
--- a/traffic_portal/app/src/app.js
+++ b/traffic_portal/app/src/app.js
@@ -38,6 +38,7 @@ var trafficPortal = angular.module('trafficPortal', [
         'app.templates',
         'angular-jwt',
         'angular-loading-bar',
+        'ngFileSaver',
 
         // public modules
         require('./modules/public').name,