app.controller('installDocker', function($scope,$http) { $scope.installDockerStatus = true; $scope.installDocker = function(){ $scope.installDockerStatus = false; url = "/docker/installDocker"; var data = {}; var config = { headers : { 'X-CSRFToken': getCookie('csrftoken') } }; $http.post(url, data,config).then(ListInitialDatas, cantLoadInitialDatas); function ListInitialDatas(response) { if (response.data.installDockerStatus === 1) { new PNotify({ title: 'Docker installed', text: 'Reloading...', type: 'success' }); location.reload(); } else{ new PNotify({ title: 'Failed to complete request', text: response.data.error, type: 'error' }); } $scope.installDockerStatus = true; } function cantLoadInitialDatas(response) { $scope.installDockerStatus = true; new PNotify({ title: 'Failed to complete request', type: 'error' }); } } }); /* Java script code for docker management */ var delayTimer = null; app.controller('dockerImages', function($scope,$http) { $scope.tagList = []; $scope.imageTag = {}; }); /* Java script code to install Container */ app.controller('runContainer', function($scope,$http) { $scope.containerCreationLoading = true; $scope.installationDetailsForm = false; $scope.installationProgress = true; $scope.errorMessageBox = true; $scope.success = true; $scope.couldNotConnect = true; $scope.goBackDisable = true; $scope.addEnvField = function() { var countEnv = Object.keys($scope.envList).length; $scope.envList[countEnv+1] = {'name':'', 'value':''}; } var statusFile; $scope.createContainer = function(){ console.log($scope.iport); console.log($scope.portType); $scope.containerCreationLoading = true; $scope.installationDetailsForm = true; $scope.installationProgress = false; $scope.errorMessageBox = true; $scope.success = true; $scope.couldNotConnect = true; $scope.goBackDisable = true; $scope.currentStatus = "Starting creation.."; url = "/docker/submitContainerCreation"; var name = $scope.name; var tag = $scope.tag; var memory = $scope.memory; var dockerOwner = $scope.dockerOwner; var image = $scope.image; var numberOfEnv = Object.keys($scope.envList).length; var data = { name: name, tag: tag, memory: memory, dockerOwner: dockerOwner, image: image, envList: $scope.envList }; $.each($scope.portType, function( port, protocol ) { data[port + "/" + protocol] = $scope.eport[port]; }); console.log(data) var config = { headers : { 'X-CSRFToken': getCookie('csrftoken') } }; $http.post(url, data,config).then(ListInitialDatas, cantLoadInitialDatas); function ListInitialDatas(response) { if (response.data.createContainerStatus === 1) { $scope.currentStatus = "Successful. Redirecting..."; window.location.href = "/docker/view/" + $scope.name } else{ $scope.containerCreationLoading = true; $scope.installationDetailsForm = true; $scope.installationProgress = false; $scope.errorMessageBox = false; $scope.success = true; $scope.couldNotConnect = true; $scope.goBackDisable = false; $scope.errorMessage = response.data.error_message; } } function cantLoadInitialDatas(response) { $scope.containerCreationLoading = true; $scope.installationDetailsForm = true; $scope.installationProgress = false; $scope.errorMessageBox = true; $scope.success = true; $scope.couldNotConnect = false; $scope.goBackDisable = false; } }; $scope.goBack = function () { $scope.containerCreationLoading = true; $scope.installationDetailsForm = false; $scope.installationProgress = true; $scope.errorMessageBox = true; $scope.success = true; $scope.couldNotConnect = true; $scope.goBackDisable = true; $("#installProgress").css("width", "0%"); }; }); /* Javascript code for listing containers */ app.controller('listContainers', function($scope,$http) { $scope.activeLog = ""; $scope.assignActive = ""; $scope.assignContainer = function(name){ $("#assign").modal("show"); $scope.assignActive = name; } $scope.submitAssignContainer = function(){ url = "/docker/assignContainer"; var data = {name: $scope.assignActive, admin: $scope.dockerOwner}; var config = { headers : { 'X-CSRFToken': getCookie('csrftoken') } }; $http.post(url, data,config).then(ListInitialData, cantLoadInitialData); function ListInitialData(response) { if (response.data.assignContainerStatus === 1) { new PNotify({ title: 'Container assigned successfully', type: 'success' }); window.location.href = '/docker/listContainers'; } else { new PNotify({ title: 'Unable to complete request', text: response.data.error_message, type: 'error' }); } $("#assign").modal("hide"); } function cantLoadInitialData(response) { console.log("not good"); new PNotify({ title: 'Unable to complete request', type: 'error' }); $("#assign").modal("hide"); } } $scope.delContainer = function(name, unlisted=false){ (new PNotify({ title: 'Confirmation Needed', text: 'Are you sure?', icon: 'fa fa-question-circle', hide: false, confirm: { confirm: true }, buttons: { closer: false, sticker: false }, history: { history: false } })).get().on('pnotify.confirm', function() { $('#imageLoading').show(); url = "/docker/delContainer"; var data = {name: name, unlisted: unlisted}; var config = { headers : { 'X-CSRFToken': getCookie('csrftoken') } }; $http.post(url, data,config).then(ListInitialData, cantLoadInitialData); function ListInitialData(response) { console.log(response); if (response.data.delContainerStatus === 1) { location.reload(); } else if (response.data.delContainerStatus == 2) { (new PNotify({ title: response.data.error_message, text: 'Delete anyway?', icon: 'fa fa-question-circle', hide: false, confirm: { confirm: true }, buttons: { closer: false, sticker: false }, history: { history: false } })).get().on('pnotify.confirm', function() { url = "/docker/delContainer"; var data = {name: name, unlisted: unlisted, force: 1}; var config = { headers : { 'X-CSRFToken': getCookie('csrftoken') } }; $http.post(url, data,config).then(ListInitialData, cantLoadInitialData); function ListInitialData(response) { if (response.data.delContainerStatus === 1) { location.reload(); } else { $("#listFail").fadeIn(); $scope.errorMessage = response.data.error_message; } $('#imageLoading').hide(); } function cantLoadInitialData(response) { $('#imageLoading').hide(); } }) } else { $("#listFail").fadeIn(); $scope.errorMessage = response.data.error_message; } $('#imageLoading').hide(); } function cantLoadInitialData(response) { $('#imageLoading').hide(); } }) } $scope.showLog = function(name, refresh = false){ $scope.logs = ""; if (refresh === false){ $('#logs').modal('show'); $scope.activeLog = name; } else { name = $scope.activeLog; } console.log(name) $scope.logs = "Loading..."; url = "/docker/getContainerLogs"; var data = {name: name}; var config = { headers : { 'X-CSRFToken': getCookie('csrftoken') } }; $http.post(url, data,config).then(ListInitialData, cantLoadInitialData); function ListInitialData(response) { console.log(response); if (response.data.containerLogStatus === 1) { $scope.logs = response.data.containerLog; } else { new PNotify({ title: 'Unable to complete request', text: response.data.error_message, type: 'error' }); } } function cantLoadInitialData(response) { new PNotify({ title: 'Unable to complete request', type: 'error' }); } } url = "/docker/getContainerList"; var data = {page: 1}; var config = { headers : { 'X-CSRFToken': getCookie('csrftoken') } }; $http.post(url, data,config).then(ListInitialData, cantLoadInitialData); function ListInitialData(response) { console.log(response); if (response.data.listContainerStatus === 1) { var finalData = JSON.parse(response.data.data); $scope.ContainerList = finalData; console.log($scope.ContainerList); $("#listFail").hide(); } else { $("#listFail").fadeIn(); $scope.errorMessage = response.data.error_message; } } function cantLoadInitialData(response) { console.log("not good"); } $scope.getFurtherContainersFromDB = function(pageNumber) { var config = { headers : { 'X-CSRFToken': getCookie('csrftoken') } }; var data = {page: pageNumber}; dataurl = "/docker/getContainerList"; $http.post(dataurl, data,config).then(ListInitialData, cantLoadInitialData); function ListInitialData(response) { if (response.data.listContainerStatus ===1) { var finalData = JSON.parse(response.data.data); $scope.ContainerList = finalData; $("#listFail").hide(); } else { $("#listFail").fadeIn(); $scope.errorMessage = response.data.error_message; console.log(response.data); } } function cantLoadInitialData(response) { console.log("not good"); } }; }); /* Java script code for containerr home page */ app.controller('viewContainer', function($scope,$http) { $scope.cName = ""; $scope.status = ""; $scope.savingSettings = false; $scope.loadingTop = false; $scope.recreate = function() { (new PNotify({ title: 'Confirmation Needed', text: 'Are you sure?', icon: 'fa fa-question-circle', hide: false, confirm: { confirm: true }, buttons: { closer: false, sticker: false }, history: { history: false } })).get().on('pnotify.confirm', function() { $('#infoLoading').show(); url = "/docker/recreateContainer"; var data = {name: $scope.cName}; var config = { headers : { 'X-CSRFToken': getCookie('csrftoken') } }; $http.post(url, data,config).then(ListInitialData, cantLoadInitialData); function ListInitialData(response) { if (response.data.recreateContainerStatus === 1) { new PNotify({ title: 'Action completed!', text: 'Redirecting...', type: 'success' }); location.reload(); } else { new PNotify({ title: 'Unable to complete request', text: response.data.error_message, type: 'error' }); } $('#infoLoading').hide(); } function cantLoadInitialData(response) { PNotify.error({ title: 'Unable to complete request', text: "Problem in connecting to server" }); $('#actionLoading').hide(); } }) } $scope.addEnvField = function() { var countEnv = Object.keys($scope.envList).length; $scope.envList[countEnv+1] = {'name':'', 'value':''}; } $scope.showTop = function(){ $scope.topHead = []; $scope.topProcesses = []; $scope.loadingTop = true; $("#processes").modal("show"); url = "/docker/getContainerTop"; var data = {name: $scope.cName}; var config = { headers : { 'X-CSRFToken': getCookie('csrftoken') } }; $http.post(url, data,config).then(ListInitialData, cantLoadInitialData); function ListInitialData(response) { if (response.data.containerTopStatus === 1) { $scope.topHead = response.data.processes.Titles; $scope.topProcesses = response.data.processes.Processes; } else { new PNotify({ title: 'Unable to complete request', text: response.data.error_message, type: 'error' }); } $scope.loadingTop = false; } function cantLoadInitialData(response) { PNotify.error({ title: 'Unable to complete request', text: "Problem in connecting to server" }); $scope.loadingTop = false; } } $scope.cRemove = function(){ (new PNotify({ title: 'Confirmation Needed', text: 'Are you sure?', icon: 'fa fa-question-circle', hide: false, confirm: { confirm: true }, buttons: { closer: false, sticker: false }, history: { history: false } })).get().on('pnotify.confirm', function() { $('#actionLoading').show(); url = "/docker/delContainer"; var data = {name: $scope.cName, unlisted: false}; var config = { headers : { 'X-CSRFToken': getCookie('csrftoken') } }; $http.post(url, data,config).then(ListInitialData, cantLoadInitialData); function ListInitialData(response) { if (response.data.delContainerStatus === 1) { new PNotify({ title: 'Container deleted!', text: 'Redirecting...', type: 'success' }); window.location.href = '/docker/listContainers'; } else { new PNotify({ title: 'Unable to complete request', text: response.data.error_message, type: 'error' }); } $('#actionLoading').hide(); } function cantLoadInitialData(response) { PNotify.error({ title: 'Unable to complete request', text: "Problem in connecting to server" }); $('#actionLoading').hide(); } }) } $scope.refreshStatus = function(){ url = "/docker/getContainerStatus"; var data = {name: $scope.cName}; var config = { headers : { 'X-CSRFToken': getCookie('csrftoken') } }; $http.post(url, data,config).then(ListInitialData, cantLoadInitialData); function ListInitialData(response) { if (response.data.containerStatus === 1) { console.log(response.data.status); $scope.status = response.data.status; } else { new PNotify({ title: 'Unable to complete request', text: response.data.error_message, type: 'error' }); } } function cantLoadInitialData(response) { PNotify.error({ title: 'Unable to complete request', text: "Problem in connecting to server" }); } } $scope.saveSettings = function(){ $('#containerSettingLoading').show(); url = "/docker/saveContainerSettings"; $scope.savingSettings = true; var data = { name: $scope.cName, memory:$scope.memory, startOnReboot: $scope.startOnReboot, envConfirmation: $scope.envConfirmation, envList: $scope.envList }; console.log(data) var config = { headers : { 'X-CSRFToken': getCookie('csrftoken') } }; $http.post(url, data,config).then(ListInitialData, cantLoadInitialData); function ListInitialData(response) { if (response.data.saveSettingsStatus === 1) { if ($scope.envConfirmation){ new PNotify({ title: 'Done. Redirecting...', type: 'success' }); location.reload(); } else{ new PNotify({ title: 'Settings Saved', type: 'success' }); } } else { new PNotify({ title: 'Unable to complete request', text: response.data.error_message, type: 'error' }); } $('#containerSettingLoading').hide(); $scope.savingSettings = false; } function cantLoadInitialData(response) { new PNotify({ title: 'Unable to complete request', text: "Problem in connecting to server", type: 'error' }); $('#containerSettingLoading').hide(); $scope.savingSettings = false; } if ($scope.startOnReboot === true){ $scope.rPolicy="Yes"; } else{ $scope.rPolicy="No"; } } $scope.cAction = function(action){ $('#actionLoading').show(); console.log($scope.cName) url = "/docker/doContainerAction"; var data = {name: $scope.cName, action: action}; var config = { headers : { 'X-CSRFToken': getCookie('csrftoken') } }; $http.post(url, data,config).then(ListInitialData, cantLoadInitialData); function ListInitialData(response) { console.log(response); if (response.data.containerActionStatus === 1) { new PNotify({ title: 'Success!', text: 'Action completed', type: 'success' }); $scope.status = response.data.status; $scope.refreshStatus() } else { new PNotify({ title: 'Unable to complete request', text: response.data.error_message, type: 'error' }); } $('#actionLoading').hide(); } function cantLoadInitialData(response) { PNotify.error({ title: 'Unable to complete request', text: "Problem in connecting to server" }); $('#actionLoading').hide(); } } $scope.loadLogs = function(name){ $scope.logs = "Loading..."; url = "/docker/getContainerLogs"; var data = {name: name}; var config = { headers : { 'X-CSRFToken': getCookie('csrftoken') } }; $http.post(url, data,config).then(ListInitialData, cantLoadInitialData); function ListInitialData(response) { console.log(response); if (response.data.containerLogStatus === 1) { $scope.logs = response.data.containerLog; } else { $scope.logs = response.data.error_message; } } function cantLoadInitialData(response) { console.log("not good"); $scope.logs = "Error loading log"; } } }); /* Java script code for docker image management */ app.controller('manageImages', function($scope,$http) { $scope.tagList = []; $scope.showingSearch = false; $("#searchResult").hide(); $scope.pullImage = function(image, tag){ function ListInitialDatas(response) { if (response.data.installImageStatus === 1) { new PNotify({ title: 'Image pulled successfully', text: 'Reloading...', type: 'success' }); location.reload() } else{ new PNotify({ title: 'Failed to complete request', text: response.data.error_message, type: 'error' }); } $('#imageLoading').hide(); } function cantLoadInitialDatas(response) { $('#imageLoading').hide(); new PNotify({ title: 'Failed to complete request', type: 'error' }); } if (image && tag){ $('#imageLoading').show(); url = "/docker/installImage"; var data = { image: image, tag: tag }; var config = { headers : { 'X-CSRFToken': getCookie('csrftoken') } }; $http.post(url, data,config).then(ListInitialDatas, cantLoadInitialDatas); } else { new PNotify({ title: 'Unable to complete request', text: 'Please select a tag', type: 'info' }); } } $scope.searchImages = function(){ console.log($scope.searchString); if (!$scope.searchString){ $("#searchResult").hide(); } else { $("#searchResult").show(); } clearTimeout(delayTimer); delayTimer = setTimeout(function() { $('#imageLoading').show(); url = "/docker/searchImage"; var data = { string: $scope.searchString }; var config = { headers : { 'X-CSRFToken': getCookie('csrftoken') } }; $http.post(url, data,config).then(ListInitialDatas, cantLoadInitialDatas); function ListInitialDatas(response) { if (response.data.searchImageStatus === 1) { $scope.images = response.data.matches; console.log($scope.images) } else{ new PNotify({ title: 'Failed to complete request', text: response.data.error, type: 'error' }); } $('#imageLoading').hide(); } function cantLoadInitialDatas(response) { $('#imageLoading').hide(); new PNotify({ title: 'Failed to complete request', type: 'error' }); } }, 500); } function populateTagList(image, page){ $('imageLoading').show(); url = "/docker/getTags" var data = { image: image, page: page+1 }; var config = { headers : { 'X-CSRFToken': getCookie('csrftoken') } }; $http.post(url, data,config).then(ListInitialData, cantLoadInitialData); function ListInitialData(response) { if (response.data.getTagsStatus === 1) { $scope.tagList[image].splice(-1,1); $scope.tagList[image] = $scope.tagList[image].concat(response.data.list); if (response.data.next != null){ $scope.tagList[image].push("Load more"); } } else { new PNotify({ title: 'Unable to complete request', text: response.data.error_message, type: 'error' }); } $('#imageLoading').hide(); } function cantLoadInitialData(response) { new PNotify({ title: 'Unable to complete request', text: response.data.error_message, type: 'error' }); $('#imageLoading').hide(); } } $scope.runContainer = function(image){ $("#errorMessage").hide(); if ($scope.imageTag[image] !== undefined) { $("#imageList").css("pointer-events","none"); } else { $("#errorMessage").show(); $scope.errorMessage = "Please select a tag"; } } $scope.loadTags = function(event){ var pagesloaded = $(event.target).data('pageloaded'); var image = event.target.id; if (!pagesloaded) { $scope.tagList[image] = ['Loading...']; $(event.target).data('pageloaded',1); populateTagList(image, pagesloaded); // $("#"+image+" option:selected").prop("selected", false); } } $scope.selectTag = function(){ var image = event.target.id; var selectedTag = $('#'+image).find(":selected").text(); if (selectedTag == 'Load more') { var pagesloaded = $(event.target).data('pageloaded'); $(event.target).data('pageloaded', pagesloaded+1); populateTagList(image, pagesloaded); } } $scope.getHistory = function(counter){ $('#imageLoading').show(); var name = $("#"+counter).val() url = "/docker/getImageHistory"; var data = {name: name}; var config = { headers : { 'X-CSRFToken': getCookie('csrftoken') } }; $http.post(url, data,config).then(ListInitialData, cantLoadInitialData); function ListInitialData(response) { console.log(response); if (response.data.imageHistoryStatus === 1) { $('#history').modal('show'); $scope.historyList = response.data.history; } else { new PNotify({ title: 'Unable to complete request', text: response.data.error_message, type: 'error' }); } $('#imageLoading').hide(); } function cantLoadInitialData(response) { new PNotify({ title: 'Unable to complete request', text: response.data.error_message, type: 'error' }); $('#imageLoading').hide(); } } $scope.rmImage = function(counter){ (new PNotify({ title: 'Confirmation Needed', text: 'Are you sure?', icon: 'fa fa-question-circle', hide: false, confirm: { confirm: true }, buttons: { closer: false, sticker: false }, history: { history: false } })).get().on('pnotify.confirm', function() { $('#imageLoading').show(); if (counter == '0') { var name = 0; } else { var name = $("#"+counter).val() } url = "/docker/removeImage"; var data = {name: name}; var config = { headers : { 'X-CSRFToken': getCookie('csrftoken') } }; $http.post(url, data,config).then(ListInitialData, cantLoadInitialData); function ListInitialData(response) { console.log(response); if (response.data.removeImageStatus === 1) { new PNotify({ title: 'Image(s) removed', type: 'success' }); window.location.href = "/docker/manageImages"; } else { new PNotify({ title: 'Unable to complete request', text: response.data.error_message, type: 'error' }); } $('#imageLoading').hide(); } function cantLoadInitialData(response) { new PNotify({ title: 'Unable to complete request', text: response.data.error_message, type: 'error' }); $('#imageLoading').hide(); } }) } });