blob: 83c1181542a017ff71dcb52a94d2598144f0844c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
* <p/>
* http://www.apache.org/licenses/LICENSE-2.0
* <p/>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.cloudera.itest.posix
import com.cloudera.itest.shell.Shell
class Service {
private String svc_name;
private List run_levels;
private Shell shRoot = new Shell("/bin/bash -s", "root");
private Shell sh = new Shell("/bin/bash -s");
public Service(String name) {
svc_name = name;
}
/**
* Start a System V service via a service(8)
*
* @return exit code of a service(8) call
*/
public int start() {
shRoot.exec("service $svc_name start");
return shRoot.ret;
}
/**
* Stop a System V service via a service(8)
*
* @return exit code of a service(8) call
*/
public int stop() {
shRoot.exec("service $svc_name stop");
return shRoot.ret;
}
/**
* Restart a System V service via a service(8)
*
* @return exit code of a service(8) call
*/
public int restart() {
shRoot.exec("service $svc_name restart");
return shRoot.ret;
}
/**
* Get a status of a System V service via a service(8)
*
* @return an output of a service(8) call
*/
public String status() {
sh.exec("service $svc_name status");
return sh.out;
}
/**
* Returns name of the service
* @return service name
*/
public String getName() {
return svc_name;
}
/**
* Returns a list of runlevels this service is registered for (we do lazy loading of run level info)
* @return list of run levels as strings (we'd use list of integers but there's "S" run level)
*/
public List getRunLevels() {
if (!run_levels) {
run_levels = [];
sh.exec("chkconfig --list $svc_name");
(sh.out.join('') =~ /([0-9Ss]):(off|on)/).each {
if ("on".equals(it[2])) {
run_levels.add(it[1]);
}
}
}
return run_levels;
}
}
|