Blame SOURCES/bz1022528-disable_cache_in_suds.patch

d67cb5
commit f78785f7d53e9d126ba51ee9e381f5ae9b3d0368
d67cb5
Author: Marek 'marx' Grac <mgrac@redhat.com>
d67cb5
Date:   Mon Oct 7 15:41:09 2013 +0200
d67cb5
d67cb5
    fence_vmware_soap, fence_ovh: Caching problem with SOAP library
d67cb5
    
d67cb5
    Both fence agents are built on top of SUDS library which creates a cache file. Unfortunately,
d67cb5
    it is not yet possible to completely move cache or remove it. Due to possible security issue (symlink
d67cb5
    vulnerability) we have decided to solve this problem as simply as possible. So '/tmp' was changed to an
d67cb5
    automatically generated temp directory which is removed at the exit of fence agent as we won't reuse it anyway.
d67cb5
    
d67cb5
    Resolves: rhbz#1014000
d67cb5
d67cb5
diff --git a/fence/agents/ovh/fence_ovh.py b/fence/agents/ovh/fence_ovh.py
d67cb5
index 881aa90..2ec3fa0 100644
d67cb5
--- a/fence/agents/ovh/fence_ovh.py
d67cb5
+++ b/fence/agents/ovh/fence_ovh.py
d67cb5
@@ -9,6 +9,7 @@
d67cb5
 # This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
d67cb5
 
d67cb5
 import sys, time
d67cb5
+import shutil, tempfile
d67cb5
 from datetime import datetime
d67cb5
 from suds.client import Client
d67cb5
 from suds.xsd.doctor import ImportDoctor, Import
d67cb5
@@ -61,6 +62,10 @@ def soap_login(options):
d67cb5
 	imp.filter.add('http://soapi.ovh.com/manager')
d67cb5
 	d = ImportDoctor(imp)
d67cb5
 
d67cb5
+	tmp_dir = tempfile.mkdtemp()
d67cb5
+	tempfile.tempdir = tmp_dir
d67cb5
+	atexit.register(remove_tmp_dir, tmp_dir)
d67cb5
+
d67cb5
 	try:
d67cb5
 		soap = Client(url, doctor=d)
d67cb5
 		session = soap.service.login(options["--username"], options["--password"], 'en', 0)
d67cb5
@@ -69,6 +74,9 @@ def soap_login(options):
d67cb5
 
d67cb5
 	options["session"] = session
d67cb5
 	return soap
d67cb5
+
d67cb5
+def remove_tmp_dir(tmp_dir):
d67cb5
+	shutil.rmtree(tmp_dir)
d67cb5
 	
d67cb5
 def main():
d67cb5
 	device_opt = [ "login", "passwd", "port", "email" ]
d67cb5
diff --git a/fence/agents/vmware_soap/fence_vmware_soap.py b/fence/agents/vmware_soap/fence_vmware_soap.py
d67cb5
index 365f8cc..ac7f0d9 100644
d67cb5
--- a/fence/agents/vmware_soap/fence_vmware_soap.py
d67cb5
+++ b/fence/agents/vmware_soap/fence_vmware_soap.py
d67cb5
@@ -1,6 +1,7 @@
d67cb5
 #!/usr/bin/python
d67cb5
 
d67cb5
 import sys, exceptions
d67cb5
+import shutil, tempfile
d67cb5
 sys.path.append("@FENCEAGENTSLIBDIR@")
d67cb5
 
d67cb5
 from suds.client import Client
d67cb5
@@ -20,6 +21,11 @@ def soap_login(options):
d67cb5
 		url = "http://"
d67cb5
 	
d67cb5
 	url += options["--ip"] + ":" + str(options["--ipport"]) + "/sdk"
d67cb5
+
d67cb5
+	tmp_dir = tempfile.mkdtemp()
d67cb5
+	tempfile.tempdir = tmp_dir
d67cb5
+	atexit.register(remove_tmp_dir, tmp_dir)
d67cb5
+	
d67cb5
 	try:
d67cb5
 		conn = Client(url + "/vimService.wsdl")
d67cb5
 		conn.set_options(location = url)
d67cb5
@@ -155,6 +161,9 @@ def set_power_status(conn, options):
d67cb5
 	else:
d67cb5
 		conn.service.PowerOffVM_Task(mo_machine)	
d67cb5
 
d67cb5
+def remove_tmp_dir(tmp_dir):
d67cb5
+	shutil.rmtree(tmp_dir)
d67cb5
+
d67cb5
 def main():
d67cb5
 	device_opt = [ "ipaddr", "login", "passwd", "web", "ssl", "port" ]
d67cb5