Skip to content

Commit 2c85c9d

Browse files
authored
Merge pull request #256 from openebs/fix-processid
fix: add agent function to install os package
2 parents 4b1aeec + 586e45c commit 2c85c9d

File tree

5 files changed

+62
-11
lines changed

5 files changed

+62
-11
lines changed

common/e2e_agent/client.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1450,6 +1450,27 @@ func IsKernelModuleLoaded(serverAddr string, moduleName string) (bool, error) {
14501450
return out == "1", err
14511451
}
14521452

1453+
// IsPackageInstalled checks if an os package is installed
1454+
func IsPackageInstalled(serverAddr string, packageName string) (bool, error) {
1455+
logf.Log.Info("Executing IsPackageInstalled", "addr", serverAddr, "packageName", packageName)
1456+
url := "http://" + getAgentAddress(serverAddr) + "/isPackageInstalled"
1457+
encodedresult, err := sendRequestGetResponse("POST", url, packageName, false)
1458+
if err != nil {
1459+
logf.Log.Info("sendRequestGetResponse", "encodedresult", encodedresult, "error", err.Error())
1460+
return false, fmt.Errorf("failed to send command to e2e-agent, error: %s", err.Error())
1461+
}
1462+
out, e2eagenterrcode, err := UnwrapResult(encodedresult)
1463+
if err != nil {
1464+
logf.Log.Info("unwrap failed", "encodedresult", encodedresult, "error", err.Error())
1465+
return false, err
1466+
}
1467+
if e2eagenterrcode != ErrNone {
1468+
return false, fmt.Errorf("failed to check if package is installed, errcode %d", e2eagenterrcode)
1469+
}
1470+
logf.Log.Info("IsPackageInstalled succeeded", "output", out)
1471+
return out == "0", err
1472+
}
1473+
14531474
// IsKernelModulePersistent checks if a kernel module is set to load persistently on boot
14541475
func IsKernelModulePersistent(serverAddr string, moduleName string, filename string) (bool, error) {
14551476
data := KernelModule{

common/k8stest/util_node.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -594,6 +594,21 @@ func VerifyKernelModuleOnNode(node string, module string) (bool, error) {
594594
return out, nil
595595
}
596596

597+
// verify if package is installed on node
598+
func VerifyPackageInstalledOnNode(node string, packageName string) (bool, error) {
599+
nodeIp, err := GetNodeIPAddress(node)
600+
if err != nil {
601+
return false, fmt.Errorf("failed to get node %s ip, error: %v", node, err)
602+
}
603+
604+
// verify package installation
605+
out, err := e2e_agent.IsPackageInstalled(*nodeIp, packageName)
606+
if err != nil {
607+
return false, fmt.Errorf("failed to verify package %s installation on node %s, error: %v", packageName, node, err)
608+
}
609+
return out, nil
610+
}
611+
597612
// verify kernel module is persistent on node after reboot
598613
func VerifyKernelModulePersistenceOnNode(node string, module string, filename string) (bool, error) {
599614
nodeIp, err := GetNodeIPAddress(node)

tools/e2e-agent/build.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
# as long as we do not make breaking changes.
1010
set -e
1111
IMAGE="openebs/e2e-agent"
12-
TAG="v3.1.2"
12+
TAG="v3.1.3"
1313
registry=""
1414
tag_as_latest=""
1515

tools/e2e-agent/e2e-agent.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ spec:
6868
securityContext:
6969
privileged: true
7070
allowPrivilegeEscalation: true
71-
image: openebs/e2e-agent:v3.1.2
71+
image: openebs/e2e-agent:v3.1.3
7272
imagePullPolicy: Always
7373
volumeMounts:
7474
- name: host-root

tools/e2e-agent/server.go

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,7 @@ func handleRequests() {
172172
router.HandleFunc("/unloadKernelModule", UnloadKernelModule).Methods("POST")
173173
router.HandleFunc("/getProcessID", GetProcessID).Methods("POST")
174174
router.HandleFunc("/isKernelModuleLoaded", IsKernelModuleLoaded).Methods("POST")
175+
router.HandleFunc("/isPackageInstalled", IsPackageInstalled).Methods("POST")
175176
router.HandleFunc("/isKernelModulePersistent", IsKernelModulePersistent).Methods("POST")
176177
router.HandleFunc("/configureNonPersistentHugePages", ConfigureNonPersistentHugePages).Methods("POST")
177178
router.HandleFunc("/isHugePagesPersistent", IsHugePagesPersistent).Methods("POST")
@@ -351,6 +352,28 @@ func IsKernelModuleLoaded(w http.ResponseWriter, r *http.Request) {
351352
WrapResult(output, ErrNone, w)
352353
}
353354

355+
func IsPackageInstalled(w http.ResponseWriter, r *http.Request) {
356+
var packageName string
357+
d := json.NewDecoder(r.Body)
358+
if err := d.Decode(&packageName); err != nil {
359+
fmt.Fprint(w, err.Error())
360+
klog.Error("failed to read JSON encoded data, Error: ", err)
361+
return
362+
}
363+
klog.Info("Checking if package is installed ", packageName)
364+
params := fmt.Sprintf("nsenter --mount=/proc/1/ns/mnt dpkg -s %s >/dev/null 2>&1 && echo 0 || echo 1", packageName)
365+
klog.Info("Checking if package is installed")
366+
output, err := bashLocal(params)
367+
if err != nil {
368+
w.WriteHeader(InternalServerErrorCode)
369+
fmt.Fprint(w, err.Error())
370+
klog.Error("failed to check if package is installed:", packageName, "Error: ", err)
371+
return
372+
}
373+
klog.Info("Successfully checked if package is installed")
374+
WrapResult(output, ErrNone, w)
375+
}
376+
354377
func IsKernelModulePersistent(w http.ResponseWriter, r *http.Request) {
355378
var module KernelModule
356379
d := json.NewDecoder(r.Body)
@@ -462,16 +485,8 @@ func GetProcessID(w http.ResponseWriter, r *http.Request) {
462485
klog.Error("failed to retrieve process ID for:", process, "Error: ", err)
463486
return
464487
}
465-
processBytes, err := base64.StdEncoding.DecodeString(output)
466-
if err != nil {
467-
w.WriteHeader(InternalServerErrorCode)
468-
fmt.Fprint(w, err.Error())
469-
klog.Error("failed to decode process ID for:", process, "Error: ", err)
470-
return
471-
}
472-
process = string(processBytes)
473488
klog.Info("Successfully retrieved process ID")
474-
WrapResult(process, ErrNone, w)
489+
WrapResult(output, ErrNone, w)
475490
}
476491

477492
func createFaultyDevice(w http.ResponseWriter, r *http.Request) {

0 commit comments

Comments
 (0)