Index: /branches/amp_3_7_1/src/webui/webui/htdocs/new/src/client/app/modules/storage/log-location/log-location.controller.js
===================================================================
--- /branches/amp_3_7_1/src/webui/webui/htdocs/new/src/client/app/modules/storage/log-location/log-location.controller.js	(revision 2373)
+++ /branches/amp_3_7_1/src/webui/webui/htdocs/new/src/client/app/modules/storage/log-location/log-location.controller.js	(working copy)
@@ -19,6 +19,7 @@
                     'value': 'primary'
                 }
             ];
+            storageViewModel.logArchives = [];
             // storageViewModel.enter = function (item) {
             //     storageViewModel.diskStatusWidget.highlight = $filter('T')(item['name']);
             // }
@@ -87,6 +88,16 @@
                 });
             }
 
+            storageViewModel.getLogArchives = function (logLocation) {
+                storageService.getLogArchives(logLocation).then(function (res) {
+                    if (res && res.status === 200) {
+                        if (res.data && res.data?.file_list && res.data?.file_list.length > 0) {
+                            storageViewModel.logArchives = [...storageViewModel.logArchives, ...res.data.file_list];
+                        }
+                    }
+                })
+            }
+
             storageViewModel.refresh = function () {
                 storageViewModel.diskList = [
                     {
@@ -99,6 +110,8 @@
                     logLocation: 'primary'
                 };
                 getDiskStatusData();
+                storageViewModel.logArchives = [];
+                storageViewModel.getLogArchives('primary');
             }
 
             storageViewModel.showProgressBar = function () {
@@ -143,6 +156,7 @@
                                     storageViewModel.secondaryDisk.logLocation = log_info['location'];
                                 }
                             })
+                            storageViewModel.getLogArchives('secondary');
                         }
                     } else {
                         $rootScope.$broadcast('endLoading', true);
@@ -162,5 +176,47 @@
                 })
             }
 
+            storageViewModel.createLogArchive = function () {
+                let logLocationConfig = {
+                    diskList: storageViewModel.diskList
+                }
+                let modalInstance = $uibModal.open({
+                    templateUrl: 'app/modules/storage/log-location/modal/create-archive.html',
+                    controller: 'createArchiveController',
+                    controllerAs: 'createArchive',
+                    resolve: {
+                        modalData: function () {
+                            return logLocationConfig;
+                        }
+                    }
+                });
+                modalInstance.result.then(function (isUpdated) {
+                    if (isUpdated) {
+                        storageViewModel.refresh();
+                    }
+                });
+            }
+
+            storageViewModel.performLogUnarchive = function (filename) {
+                let logLocationConfig = {
+                    filename: filename,
+                    diskList: storageViewModel.diskList
+                }
+                let modalInstance = $uibModal.open({
+                    templateUrl: 'app/modules/storage/log-location/modal/unarchive.html',
+                    controller: 'unarchiveController',
+                    controllerAs: 'unarchive',
+                    resolve: {
+                        modalData: function () {
+                            return logLocationConfig;
+                        }
+                    }
+                });
+                modalInstance.result.then(function (isUpdated) {
+                    if (isUpdated) {
+                        storageViewModel.refresh();
+                    }
+                });
+            }
             storageViewModel.refresh();
         }])
Index: /branches/amp_3_7_1/src/webui/webui/htdocs/new/src/client/app/modules/storage/log-location/log-location.html
===================================================================
--- /branches/amp_3_7_1/src/webui/webui/htdocs/new/src/client/app/modules/storage/log-location/log-location.html	(revision 2373)
+++ /branches/amp_3_7_1/src/webui/webui/htdocs/new/src/client/app/modules/storage/log-location/log-location.html	(working copy)
@@ -94,4 +94,57 @@
             </div>
         </div>
     </div>
+    <div class="col-md-12">
+        <div class="col-md-12">
+            <div class="row">
+                <div class="widget">
+                    <div class="widget-header">
+                        <span>{{ 'Archived Logs' | T }}</span>
+                    </div>
+                </div>
+            </div>
+            <div class="row">
+                <div class="widget">
+                    <div class="table-toolbar">
+                        <button class="btn-link" title="{{ 'Create Archive' | T }}"
+                                ng-click="storageLogLocation.createLogArchive()"><i
+                            class="fa fa-2x fa-plus-circle"></i></button>
+                    </div>
+                    <div class="table-wrapper">
+                        <table st-table="displayedCollection" st-safe-src="storageLogLocation.logArchives"
+                               class="table table-hover table-striped">
+                            <thead>
+                            <tr>
+                                <th class="d-num">No.</th>
+                                <th class="d-name">{{ 'File Name' | T }}</th>
+                                <th class="d-action">{{ 'Action' | T }}</th>
+                            </tr>
+                            </thead>
+                            <tbody>
+                            <tr ng-repeat="archiveItem in displayedCollection">
+                                <td class="d-num">{{ $index + 1 }}</td>
+                                <td>{{ archiveItem }}</td>
+                                <td>
+                                    <a class="icon-box" title="{{ 'Unarchive' | T }}"
+                                       ng-click="storageLogLocation.performLogUnarchive(archiveItem)"><i
+                                        class="glyphicon glyphicon-upload"></i></a>
+                                </td>
+                            </tr>
+                            </tbody>
+                            <tfoot>
+                            <tr>
+                                <td colspan="3" class="text-center">
+                                    <div st-pagination="" st-items-by-page="pageSize" st-displayed-pages="5"
+                                         st-page-change="onPageChange(newPage)"></div>
+                                </td>
+                            </tr>
+                            </tfoot>
+                        </table>
+                    </div>
+                    <p class="align-center" ng-if="storageLogLocation.logArchives.length == 0">No matching records
+                        found.</p><br>
+                </div>
+            </div>
+        </div>
+    </div>
 </div>
Index: /branches/amp_3_7_1/src/webui/webui/htdocs/new/src/client/app/modules/storage/log-location/modal/create-archive.controller.js
===================================================================
--- /branches/amp_3_7_1/src/webui/webui/htdocs/new/src/client/app/modules/storage/log-location/modal/create-archive.controller.js	(revision 0)
+++ /branches/amp_3_7_1/src/webui/webui/htdocs/new/src/client/app/modules/storage/log-location/modal/create-archive.controller.js	(working copy)
@@ -0,0 +1,49 @@
+angular.module('cm.storage')
+    .controller('createArchiveController', [
+        '$scope',
+        '$rootScope',
+        '$state',
+        '$stateParams',
+        '$uibModal',
+        '$uibModalInstance',
+        '$filter',
+        'storageService',
+        'modalData',
+        function ($scope, $rootScope, $state, $stateParams, $uibModal, $uibModalInstance, $filter, storageService, modalData) {
+            var addViewModal = this;
+
+            addViewModal.diskList = modalData.diskList;
+            addViewModal.selectedDisk = 'primary';
+
+            addViewModal.showProgressBar = function () {
+                var modalInstance = $uibModal.open({
+                    templateUrl: 'app/modules/common/templates/progress.html',
+                    controller: 'showProgressCtrl',
+                    controllerAs: 'progress',
+                    backdrop: false
+                });
+            };
+
+            addViewModal.close = function () {
+                $uibModalInstance.dismiss();
+            };
+
+            addViewModal.submit = function () {
+                addViewModal.showProgressBar();
+
+                storageService.createLogArchive(addViewModal.selectedDisk).then(function (response) {
+                    $rootScope.$broadcast('endLoading', true);
+                    if (response && response.status === 200) {
+                        if (response.data && response.data?.status) {
+                            alert("Status: " + response.data.status);
+                            $uibModalInstance.close(true);
+                        } else {
+                            addViewModal.errorMsg = response.data?.message;
+                        }
+                    } else {
+                        addViewModal.errorMsg = $filter('T')('Internal server error');
+                    }
+                });
+            };
+        }
+    ]);
Index: /branches/amp_3_7_1/src/webui/webui/htdocs/new/src/client/app/modules/storage/log-location/modal/create-archive.html
===================================================================
--- /branches/amp_3_7_1/src/webui/webui/htdocs/new/src/client/app/modules/storage/log-location/modal/create-archive.html	(revision 0)
+++ /branches/amp_3_7_1/src/webui/webui/htdocs/new/src/client/app/modules/storage/log-location/modal/create-archive.html	(working copy)
@@ -0,0 +1,36 @@
+<div class="">
+    <div class="modal-header">
+        <button type="button" class="close" ng-click="createArchive.close()" aria-label="Close"><span
+            aria-hidden="true">&times;</span>
+        </button>
+        <h4 class="modal-title">{{ 'Create Archive' | T}}</h4>
+    </div>
+    <div class="modal-body">
+        <form class="form-horizontal" name="add">
+            <div class="form-group">
+                <label class="control-label col-md-3">{{ 'Storage' | T }}</label>
+                <div class="col-md-8">
+                    <select name="type" class="form-control" ng-model="createArchive.selectedDisk">
+                        <option ng-repeat="row in createArchive.diskList" value="{{row.value}}">{{row.name|T}}
+                        </option>
+                    </select>
+                </div>
+            </div>
+            <div class="form-group">
+                <div class="col-md-offset-3 col-md-9 errorMsg">{{createArchive.errorMsg}}</div>
+            </div>
+            <div class="form-group">
+                <div class="col-md-offset-3 col-md-9">
+                    <button class="btn btn-primary" ng-click="createArchive.submit()">{{ 'Submit' | T}}</button>
+                    <button class="btn btn-default" ng-click="createArchive.close()">{{ 'Cancel' | T}}</button>
+                </div>
+            </div>
+        </form>
+    </div>
+</div>
+
+<style>
+    .modal-dialog {
+        width: 700px;
+    }
+</style>
Index: /branches/amp_3_7_1/src/webui/webui/htdocs/new/src/client/app/modules/storage/log-location/modal/unarchive.controller.js
===================================================================
--- /branches/amp_3_7_1/src/webui/webui/htdocs/new/src/client/app/modules/storage/log-location/modal/unarchive.controller.js	(revision 0)
+++ /branches/amp_3_7_1/src/webui/webui/htdocs/new/src/client/app/modules/storage/log-location/modal/unarchive.controller.js	(working copy)
@@ -0,0 +1,49 @@
+angular.module('cm.storage')
+    .controller('unarchiveController', [
+        '$scope',
+        '$rootScope',
+        '$state',
+        '$stateParams',
+        '$uibModal',
+        '$uibModalInstance',
+        '$filter',
+        'storageService',
+        'modalData',
+        function ($scope, $rootScope, $state, $stateParams, $uibModal, $uibModalInstance, $filter, storageService, modalData) {
+            var addViewModal = this;
+
+            addViewModal.diskList = modalData.diskList;
+            addViewModal.filename = modalData.filename;
+            addViewModal.selectedDisk = 'primary';
+
+            addViewModal.showProgressBar = function () {
+                var modalInstance = $uibModal.open({
+                    templateUrl: 'app/modules/common/templates/progress.html',
+                    controller: 'showProgressCtrl',
+                    controllerAs: 'progress',
+                    backdrop: false
+                });
+            };
+
+            addViewModal.close = function () {
+                $uibModalInstance.dismiss();
+            };
+
+            addViewModal.submit = function () {
+                addViewModal.showProgressBar();
+                storageService.performLogUnarchive(addViewModal.filename, addViewModal.selectedDisk).then(function (response) {
+                    $rootScope.$broadcast('endLoading', true);
+                    if (response && response.status === 200) {
+                        if (response.data && response.data?.status) {
+                            alert("Status: " + response.data.status);
+                            $uibModalInstance.close(true);
+                        } else {
+                            addViewModal.errorMsg = response.data?.message;
+                        }
+                    } else {
+                        addViewModal.errorMsg = $filter('T')('Internal server error');
+                    }
+                });
+            };
+        }
+    ]);
Index: /branches/amp_3_7_1/src/webui/webui/htdocs/new/src/client/app/modules/storage/log-location/modal/unarchive.html
===================================================================
--- /branches/amp_3_7_1/src/webui/webui/htdocs/new/src/client/app/modules/storage/log-location/modal/unarchive.html	(revision 0)
+++ /branches/amp_3_7_1/src/webui/webui/htdocs/new/src/client/app/modules/storage/log-location/modal/unarchive.html	(working copy)
@@ -0,0 +1,42 @@
+<div class="">
+    <div class="modal-header">
+        <button type="button" class="close" ng-click="unarchive.close()" aria-label="Close"><span
+            aria-hidden="true">&times;</span>
+        </button>
+        <h4 class="modal-title">{{ 'UnArchive' | T}}</h4>
+    </div>
+    <div class="modal-body">
+        <form class="form-horizontal" name="add">
+            <div class="form-group">
+                <label class="control-label col-md-3">{{ 'Filename' | T }}</label>
+                <div class="col-md-8">
+                    <input type="text" class="form-control" ng-model="unarchive.filename" readonly="true">
+                </div>
+            </div>
+            <div class="form-group">
+                <label class="control-label col-md-3">{{ 'Storage' | T }}</label>
+                <div class="col-md-8">
+                    <select name="type" class="form-control" ng-model="unarchive.selectedDisk">
+                        <option ng-repeat="row in unarchive.diskList" value="{{row.value}}">{{row.name|T}}
+                        </option>
+                    </select>
+                </div>
+            </div>
+            <div class="form-group">
+                <div class="col-md-offset-3 col-md-9 errorMsg">{{unarchive.errorMsg}}</div>
+            </div>
+            <div class="form-group">
+                <div class="col-md-offset-3 col-md-9">
+                    <button class="btn btn-primary" ng-click="unarchive.submit()">{{ 'Submit' | T}}</button>
+                    <button class="btn btn-default" ng-click="unarchive.close()">{{ 'Cancel' | T}}</button>
+                </div>
+            </div>
+        </form>
+    </div>
+</div>
+
+<style>
+    .modal-dialog {
+        width: 700px;
+    }
+</style>
Index: /branches/amp_3_7_1/src/webui/webui/htdocs/new/src/client/app/modules/storage/storage.service.js
===================================================================
--- /branches/amp_3_7_1/src/webui/webui/htdocs/new/src/client/app/modules/storage/storage.service.js	(revision 2373)
+++ /branches/amp_3_7_1/src/webui/webui/htdocs/new/src/client/app/modules/storage/storage.service.js	(working copy)
@@ -18,7 +18,10 @@
                 ValueFormat1024: ValueFormat1024,
                 getSecondaryDriveInfo: getSecondaryDriveInfo,
                 getLogLocation: getLogLocation,
-                updateLogLocation: updateLogLocation
+                updateLogLocation: updateLogLocation,
+                getLogArchives: getLogArchives,
+                createLogArchive: createLogArchive,
+                performLogUnarchive: performLogUnarchive,
             };
 
             function formatBigData(value) {
@@ -153,7 +156,7 @@
                 return api.post2('/storage/query', post_data);
             }
 
-            function getStorageCrontab(storage='primary') {
+            function getStorageCrontab(storage = 'primary') {
                 return api.get('/storage/crontab?storage=' + storage);
             }
 
@@ -188,5 +191,24 @@
                 }
                 return api.post2('/log/location', JSON.stringify(post_data))
             }
+
+            function getLogArchives(logLocation) {
+                return api.get('/log/archives?location=' + logLocation)
+            }
+
+            function createLogArchive(logLocation) {
+                let post_data = {
+                    "location": logLocation
+                }
+                return api.post2('/log/archive', JSON.stringify(post_data))
+            }
+
+            function performLogUnarchive(filename, logLocation) {
+                let post_data = {
+                    "filename": filename,
+                    "location": logLocation
+                }
+                return api.post2('/log/unarchive', JSON.stringify(post_data))
+            }
         }
     ]);
