Blame SOURCES/cobbler-findks.patch

1070a0
diff -rupN cobbler-2.0.7.old/cobbler/services.py cobbler-2.0.7/cobbler/services.py
1070a0
--- cobbler-2.0.7.old/cobbler/services.py	2014-09-11 11:51:46.494164060 -0400
1070a0
+++ cobbler-2.0.7/cobbler/services.py	2014-09-11 11:52:33.163499576 -0400
1070a0
@@ -217,25 +217,18 @@ class CobblerSvc(object):
1070a0
     def findks(self,system=None,profile=None,**rest):
1070a0
         self.__xmlrpc_setup()
1070a0
 
1070a0
-        serverseg = self.server.replace("http://","")
1070a0
-        serverseg = self.server.replace("/cobbler_api","")
1070a0
-
1070a0
         name = "?"    
1070a0
-        type = "system"
1070a0
         if system is not None:
1070a0
-            url = "%s/cblr/svc/op/ks/system/%s" % (serverseg, name)
1070a0
+            url = "/cblr/svc/op/ks/system/%s" % (system.name)
1070a0
         elif profile is not None:
1070a0
-            url = "%s/cblr/svc/op/ks/profile/%s" % (serverseg, name)
1070a0
+            url = "/cblr/svc/op/ks/profile/%s" % (profile.name)
1070a0
         else:
1070a0
             name = self.autodetect(**rest)
1070a0
             if name.startswith("FAILED"):
1070a0
                 return "# autodetection %s" % name 
1070a0
-            url = "%s/cblr/svc/op/ks/system/%s" % (serverseg, name)
1070a0
+            url = "/cblr/svc/op/ks/system/%s" % (name)
1070a0
                 
1070a0
-        try: 
1070a0
-            return urlgrabber.urlread(url)
1070a0
-        except:
1070a0
-            return "# kickstart retrieval failed (%s)" % url
1070a0
+        return url + "# redirect"
1070a0
 
1070a0
     def puppet(self,hostname=None,**rest):
1070a0
         self.__xmlrpc_setup()
1070a0
diff -rupN cobbler-2.0.7.old/scripts/services.wsgi cobbler-2.0.7/scripts/services.wsgi
1070a0
--- cobbler-2.0.7.old/scripts/services.wsgi	2014-09-11 11:51:46.500164103 -0400
1070a0
+++ cobbler-2.0.7/scripts/services.wsgi	2014-09-11 11:52:33.163499576 -0400
1070a0
@@ -56,7 +56,11 @@ def application(environ, start_response)
1070a0
     # This MAC header is set by anaconda during a kickstart booted with the 
1070a0
     # kssendmac kernel option. The field will appear here as something 
1070a0
     # like: eth0 XX:XX:XX:XX:XX:XX
1070a0
-    form["REMOTE_MAC"]  = form.get("HTTP_X_RHN_PROVISIONING_MAC_0", None)
1070a0
+    form["REMOTE_MAC"]  = environ.get("HTTP_X_RHN_PROVISIONING_MAC_0", None)
1070a0
+
1070a0
+    # REMOTE_ADDR isn't a required wsgi attribute so it may be naive to assume
1070a0
+    # it's always present in this context.
1070a0
+    form["REMOTE_ADDR"] = environ.get("REMOTE_ADDR", None)
1070a0
 
1070a0
     # Save client remote address for ks/triggers
1070a0
     form["REMOTE_ADDR"]  = environ['REMOTE_ADDR']
1070a0
@@ -80,6 +84,7 @@ def application(environ, start_response)
1070a0
 
1070a0
     # Execute corresponding operation on the CobblerSvc object:
1070a0
     func = getattr( cw, mode )
1070a0
+    response_headers = [('Content-type', 'text/plain;charset=utf-8')]
1070a0
     try:
1070a0
         content = func( **form )
1070a0
 
1070a0
@@ -96,13 +101,16 @@ def application(environ, start_response)
1070a0
                 content.find("# object not found") != -1:
1070a0
             print("content not found: %s" % my_uri)
1070a0
             status = "404 NOT FOUND"
1070a0
+        elif content.find("# redirect") != -1:
1070a0
+            status = "302 Found"
1070a0
+            response_headers.append(('Location', content[:content.find("# redirect")]))
1070a0
+            content = ""
1070a0
     except xmlrpclib.Fault, (err):
1070a0
         status = '500 SERVER ERROR'
1070a0
         content = err.faultString
1070a0
 	
1070a0
  #   req.content_type = "text/plain;charset=utf-8"
1070a0
-    response_headers = [('Content-type', 'text/plain;charset=utf-8'),
1070a0
-                        ('Content-Length', str(len(content)))]
1070a0
+    response_headers.append(('Content-Length', str(len(content))))
1070a0
     start_response(status, response_headers)
1070a0
 
1070a0
     return [content]