Skip to content

Commit

Permalink
Merge pull request #1924 from pperiyasamy/pyssl-dep-check-4.13
Browse files Browse the repository at this point in the history
OCPBUGS-20047: Adjust python ssl library dependency check
  • Loading branch information
openshift-ci[bot] committed Oct 16, 2023
2 parents 6f9d5cd + abc2560 commit 881909d
Showing 1 changed file with 26 additions and 9 deletions.
35 changes: 26 additions & 9 deletions go-controller/cmd/ovnkube-trace/ovnkube-trace.go
Expand Up @@ -887,29 +887,46 @@ func getOfprotoIPFamilyArgs(protocol string, ip net.IP) (string, string, string)
func installOvnDetraceDependencies(coreclient *corev1client.CoreV1Client, restconfig *rest.Config, podName, ovnNamespace string) error {
dependencies := map[string]string{
"ovs": "if type -p ovn-detrace >/dev/null 2>&1; then echo 'true' ; fi",
"pyOpenSSL": "if rpm -qa | egrep -q python3-pyOpenSSL; then echo 'true'; fi",
"pyOpenSSL": "if python -c 'import ssl; print(ssl.OPENSSL_VERSION)' > /dev/null; then echo 'true'; fi",
}
for dependency, dependencyCmd := range dependencies {
depVerifyOut, depVerifyErr, err := execInPod(coreclient, restconfig, ovnNamespace, podName, "ovnkube-node", dependencyCmd, "")
verifyOut, _, err := verifyDependency(coreclient, restconfig, podName, ovnNamespace, dependency, dependencyCmd)
if err != nil {
return fmt.Errorf("dependency verification error in pod %s, container %s. Error '%v', stdOut: '%s'\n stdErr: %s",
podName, "ovnkube-node", err, depVerifyOut, depVerifyErr)
return err
}
trueFalse := strings.TrimSuffix(depVerifyOut, "\n")
klog.V(10).Infof("Dependency check '%s' in pod '%s', container '%s' yielded '%s'", dependencyCmd, podName, "ovnkube-node", trueFalse)
if trueFalse != "true" {
if verifyOut != "true" {
verifyOut, verifyErr, err := verifyDependency(coreclient, restconfig, podName, ovnNamespace, "pip3", "if type -p pip3 >/dev/null 2>&1; then echo 'true' ; fi")
if err != nil {
return err
}
if verifyOut != "true" {
return fmt.Errorf("ovn-detrace error while verifying dependency pip3 in pod %s, container %s. stdOut: '%s'\n stdErr: %s", podName,
"ovnkube-node", verifyOut, verifyErr)
}
installCmd := "pip3 install " + dependency
depInstallOut, depInstallErr, err := execInPod(coreclient, restconfig, ovnNamespace, podName, "ovnkube-node", installCmd, "")
if err != nil {
return fmt.Errorf("ovn-detrace error in pod %s, container %s. Error '%v', stdOut: '%s'\n stdErr: %s",
podName, "ovnkube-node", err, depInstallOut, depInstallErr)
return fmt.Errorf("ovn-detrace error while installing dependency %s in pod %s, container %s. Error '%v', stdOut: '%s'\n stdErr: %s",
dependency, podName, "ovnkube-node", err, depInstallOut, depInstallErr)

}
klog.V(1).Infof("Install ovn-detrace dependencies output: %s\n", depInstallOut)
}
}
return nil
}

func verifyDependency(coreclient *corev1client.CoreV1Client, restconfig *rest.Config, podName, ovnNamespace, dependency, depCheckCommand string) (string, string, error) {
depVerifyOut, depVerifyErr, err := execInPod(coreclient, restconfig, ovnNamespace, podName, "ovnkube-node", depCheckCommand, "")
if err != nil {
return "", "", fmt.Errorf("ovn-detrace error while verifying dependency %s in pod %s, container %s. Error '%v', stdOut: '%s'\n stdErr: %s",
dependency, podName, "ovnkube-node", err, depVerifyOut, depVerifyErr)
}
trueFalse := strings.TrimSuffix(depVerifyOut, "\n")
klog.V(10).Infof("Dependency %s check '%s' in pod '%s', container '%s' yielded '%s'", dependency, depCheckCommand, podName, "ovnkube-node", trueFalse)
return trueFalse, depVerifyErr, nil
}

// runOvnDetrace runs an ovn-detrace command for the given input.
// Returns error if dependencies are not met (allows for graceful handling of those issues).
func runOvnDetrace(coreclient *corev1client.CoreV1Client, restconfig *rest.Config, direction string, srcPodInfo *PodInfo,
Expand Down

0 comments on commit 881909d

Please sign in to comment.