Files
CyberPanel/dockerManager/static/dockerManager/dockerManager.js
Chirag Aggarwal 9a52efcfd2 Docker app beta
2019-01-07 13:11:12 +00:00

1106 lines
32 KiB
JavaScript

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();
}
})
}
});