mirror of
https://github.com/portainer/portainer.git
synced 2025-07-24 15:59:41 +02:00
* feat(back): saved data in snapshot * feat(endpoints): adding interceptors to retrieve saved data on offline endpoints * feat(endpoints): offline dashboard working - need tests on offline views * refactor(endpoints): interceptors cleaning and saving/loading offline endpoints data in/from localstorage * feat(endpoints): browsing offline endpoints * feat(endpoints): removing all the link in offline mode - sidebar not working when switching between off and on modes w/ stateManager logic * feat(endpoints): endpoint status detection in real time * fix(endpoints): offline swarm endpoint are not accessible anymore * fix(endpoints): refactor message + disable offline browsing for an endpoint when no snapshot is available for it * fix(endpoints): adding timeout and enabling loading bar for offline requests * fix(endpoints): trying to access a down endpoint wont remove sidebar items if it fails * feat(endpoints): disable checkboxes on offline views for offline mode * feat(endpoints): updating endpoint status when detecting a change * refactor(host): moved offline status panel from engine view to new host view * fix(endpoints): missing endpoint update on ping from home view * fix(api): rework EndpointUpdate operation * refactor(offline): moved endpoint status to EndpointProvider and refactor the status-changed detection * fix(offline): moved status detection to callback on views -> prevent displaying the offline message when endpoint is back online on view change * fix(offline): offline message is now displayed online when browsing an offline endpoint * fix(offline): sidebar updates correctly on endpoint status change * fix(offline): offline panel not displayed and hidden on online mode * refactor(offline): rework of OfflineMode management * refactor(offline): extract information-panel for offlineMode into a component * refactor(offline): remove redundant binding of informationPanel + endpointStatusInterceptor patter as service * refactor(interceptors): moved interceptors pattern to service pattern * feat(stacks): prevent inspection of a stack in offline mode * feat(host): hide devices/disk panels in offline mode * feat(host): disable browse action in offline mode * refactor(home): remove comments
81 lines
2.6 KiB
JavaScript
81 lines
2.6 KiB
JavaScript
angular.module('portainer.docker').controller('HostViewController', [
|
|
'$q', 'SystemService', 'Notifications', 'StateManager', 'AgentService', 'ContainerService', 'Authentication', 'EndpointProvider',
|
|
function HostViewController($q, SystemService, Notifications, StateManager, AgentService, ContainerService, Authentication, EndpointProvider) {
|
|
var ctrl = this;
|
|
|
|
this.$onInit = initView;
|
|
|
|
ctrl.state = {
|
|
isAgent: false,
|
|
isAdmin : false,
|
|
offlineMode: false
|
|
};
|
|
|
|
this.engineDetails = {};
|
|
this.hostDetails = {};
|
|
this.devices = null;
|
|
this.disks = null;
|
|
|
|
function initView() {
|
|
var applicationState = StateManager.getState();
|
|
ctrl.state.isAgent = applicationState.endpoint.mode.agentProxy;
|
|
ctrl.state.isAdmin = Authentication.getUserDetails().role === 1;
|
|
var agentApiVersion = applicationState.endpoint.agentApiVersion;
|
|
ctrl.state.agentApiVersion = agentApiVersion;
|
|
|
|
$q.all({
|
|
version: SystemService.version(),
|
|
info: SystemService.info(),
|
|
jobs: ctrl.state.isAdmin ? ContainerService.containers(true, { label: ['io.portainer.job.endpoint'] }) : []
|
|
})
|
|
.then(function success(data) {
|
|
ctrl.engineDetails = buildEngineDetails(data);
|
|
ctrl.hostDetails = buildHostDetails(data.info);
|
|
ctrl.state.offlineMode = EndpointProvider.offlineMode();
|
|
ctrl.jobs = data.jobs;
|
|
|
|
if (ctrl.state.isAgent && agentApiVersion > 1) {
|
|
return AgentService.hostInfo(data.info.Hostname).then(function onHostInfoLoad(agentHostInfo) {
|
|
ctrl.devices = agentHostInfo.PCIDevices;
|
|
ctrl.disks = agentHostInfo.PhysicalDisks;
|
|
});
|
|
}
|
|
})
|
|
.catch(function error(err) {
|
|
Notifications.error(
|
|
'Failure',
|
|
err,
|
|
'Unable to retrieve engine details'
|
|
);
|
|
});
|
|
}
|
|
|
|
function buildEngineDetails(data) {
|
|
var versionDetails = data.version;
|
|
var info = data.info;
|
|
return {
|
|
releaseVersion: versionDetails.Version,
|
|
apiVersion: versionDetails.ApiVersion,
|
|
rootDirectory: info.DockerRootDir,
|
|
storageDriver: info.Driver,
|
|
loggingDriver: info.LoggingDriver,
|
|
volumePlugins: info.Plugins.Volume,
|
|
networkPlugins: info.Plugins.Network
|
|
};
|
|
}
|
|
|
|
function buildHostDetails(info) {
|
|
return {
|
|
os: {
|
|
arch: info.Architecture,
|
|
type: info.OSType,
|
|
name: info.OperatingSystem
|
|
},
|
|
name: info.Name,
|
|
kernelVersion: info.KernelVersion,
|
|
totalCPU: info.NCPU,
|
|
totalMemory: info.MemTotal
|
|
};
|
|
}
|
|
}
|
|
]);
|