Add service stopped state
This commit is contained in:
parent
7e94f9792a
commit
e401809ad5
29
app/classes/state/os/ServiceStoppedState.js
Normal file
29
app/classes/state/os/ServiceStoppedState.js
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
const State = require('../State')
|
||||||
|
|
||||||
|
class ServiceStoppedState extends State {
|
||||||
|
constructor(host, config) {
|
||||||
|
if ( !host.services ) {
|
||||||
|
throw new Error(`Cannot apply service stopped state to host ${host.name}: missing service manager API.`)
|
||||||
|
}
|
||||||
|
super(host, config)
|
||||||
|
}
|
||||||
|
|
||||||
|
async reverse() {
|
||||||
|
const services = Array.isArray(this._config.service) ? this._config.service : [this._config.service]
|
||||||
|
return this._host.services.start(...services)
|
||||||
|
}
|
||||||
|
|
||||||
|
async check() {
|
||||||
|
const services = Array.isArray(this._config.service) ? this._config.service : [this._config.service]
|
||||||
|
let states = await this._host.services.status(...services)
|
||||||
|
if ( !Array.isArray(states) ) states = [states]
|
||||||
|
return !states.some(x => x.status === 'running')
|
||||||
|
}
|
||||||
|
|
||||||
|
async apply() {
|
||||||
|
const services = Array.isArray(this._config.service) ? this._config.service : [this._config.service]
|
||||||
|
return this._host.services.stop(...services)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = exports = ServiceStoppedState
|
@ -13,7 +13,7 @@ class StatesService extends Service {
|
|||||||
static #state_map = {
|
static #state_map = {
|
||||||
// TODO apache and nginx states - virtual host, reverse proxy
|
// TODO apache and nginx states - virtual host, reverse proxy
|
||||||
// TODO package repository states - import keys, install repository
|
// TODO package repository states - import keys, install repository
|
||||||
// TODO service manager states - service enabled, service installed, stopped
|
// TODO service manager states - service enabled, service installed
|
||||||
|
|
||||||
'fs.file': require('../classes/state/fs/FileState'),
|
'fs.file': require('../classes/state/fs/FileState'),
|
||||||
'fs.directory': require('../classes/state/fs/DirectoryState'),
|
'fs.directory': require('../classes/state/fs/DirectoryState'),
|
||||||
@ -34,6 +34,7 @@ class StatesService extends Service {
|
|||||||
'package.cache.clear': require('../classes/state/os/PackageCacheClearedState'),
|
'package.cache.clear': require('../classes/state/os/PackageCacheClearedState'),
|
||||||
|
|
||||||
'service.running': require('../classes/state/os/ServiceState'),
|
'service.running': require('../classes/state/os/ServiceState'),
|
||||||
|
'service.stopped': require('../classes/state/os/ServiceStoppedState'),
|
||||||
'service.restarted': require('../classes/state/os/ServiceRestartState'),
|
'service.restarted': require('../classes/state/os/ServiceRestartState'),
|
||||||
'service.daemon.reloaded': require('../classes/state/os/ServiceDaemonReloadState'),
|
'service.daemon.reloaded': require('../classes/state/os/ServiceDaemonReloadState'),
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user