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:44 UTC
[trafficcontrol] 05/08: added functional iso streaming capability
to TP and updated imported modules
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'
]
},
{