At authentication required proxy environment, such as setting $http_proxy to 'http://user:password@ip:port', the following error will be caught.
EE: Using proxy http://user:password@ip:port EE: could not connect to 'url', skipping update: 'error message' It means toaster can not fetche layer, recipe and machine information from remote repository at authentication required proxy environment. What this patch tries to fix is that make toaster support authentication required proxy connection. I have did some tests after applying this patch. 1. Proxy with authentication # export http_proxy="http://user:password@ip:port" # bitbake/bin/toaster Result: OK 2. Proxy without authentication # export http_proxy="http://ip:port" # bitbake/bin/toaster Result: OK 3. Directly # bitbake/bin/toaster Result: Unknow, Not yet tested Signed-off-by: Bian Naimeng <[email protected]> --- lib/toaster/orm/models.py | 36 +++++++----------------------------- 1 file changed, 7 insertions(+), 29 deletions(-) diff --git a/lib/toaster/orm/models.py b/lib/toaster/orm/models.py index 92fcaa7..ffd435b 100644 --- a/lib/toaster/orm/models.py +++ b/lib/toaster/orm/models.py @@ -817,42 +817,20 @@ class LayerIndexLayerSource(LayerSource): assert self.apiurl is not None from django.db import transaction, connection - import httplib, urlparse, json + import urllib2, urlparse, json import os proxy_settings = os.environ.get("http_proxy", None) def _get_json_response(apiurl = self.apiurl): - conn = None _parsedurl = urlparse.urlparse(apiurl) path = _parsedurl.path - query = _parsedurl.query - def parse_url(url): - parsedurl = urlparse.urlparse(url) - try: - (host, port) = parsedurl.netloc.split(":") - except ValueError: - host = parsedurl.netloc - port = None - - if port is None: - port = 80 - else: - port = int(port) - return (host, port) - if proxy_settings is None: - host, port = parse_url(apiurl) - conn = httplib.HTTPConnection(host, port) - conn.request("GET", path + "?" + query) - else: - host, port = parse_url(proxy_settings) - conn = httplib.HTTPConnection(host, port) - conn.request("GET", apiurl) - - r = conn.getresponse() - if r.status != 200: - raise Exception("Failed to read " + path + ": %d %s" % (r.status, r.reason)) - return json.loads(r.read()) + try: + res = urllib2.urlopen(apiurl); + except urllib2.URLError,e: + raise Exception("Failed to read " + path + ": %d %s" % (e.code, e.reason)) + + return json.loads(res.read()) # verify we can get the basic api try: -- 1.9.1 -- _______________________________________________ toaster mailing list [email protected] https://lists.yoctoproject.org/listinfo/toaster
