Skip to content
This repository was archived by the owner on Jan 20, 2020. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions dockercloud/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,11 @@
basic_auth = auth.load_from_file("~/.docker/config.json")

if os.environ.get('DOCKERCLOUD_USER') and os.environ.get('DOCKERCLOUD_PASS'):
basic_auth = base64.b64encode("%s:%s" % (os.environ.get('DOCKERCLOUD_USER'), os.environ.get('DOCKERCLOUD_PASS')))
creds = "%s:%s" % (os.environ.get('DOCKERCLOUD_USER'), os.environ.get('DOCKERCLOUD_PASS'))
basic_auth = base64.b64encode(creds.encode()).decode()
if os.environ.get('DOCKERCLOUD_USER') and os.environ.get('DOCKERCLOUD_APIKEY'):
basic_auth = base64.b64encode("%s:%s" % (os.environ.get('DOCKERCLOUD_USER'), os.environ.get('DOCKERCLOUD_APIKEY')))
creds = "%s:%s" % (os.environ.get('DOCKERCLOUD_USER'), os.environ.get('DOCKERCLOUD_APIKEY'))
basic_auth = base64.b64encode(creds.encode()).decode()

rest_host = os.environ.get("DOCKERCLOUD_REST_HOST") or 'https://cloud.docker.com/'
stream_host = os.environ.get("DOCKERCLOUD_STREAM_HOST") or 'wss://ws.cloud.docker.com/'
Expand Down
10 changes: 7 additions & 3 deletions dockercloud/api/auth.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,11 @@

HUB_INDEX = "https://index.docker.io/v1/"


def authenticate(username, password):
verify_credential(username, password)
dockercloud.basic_auth = base64.b64encode("%s:%s" % (username, password))
cred = "%s:%s" % (username, password)
dockercloud.basic_auth = base64.b64encode(cred.encode())


def verify_credential(username, password):
Expand Down Expand Up @@ -71,12 +73,14 @@ def load_from_file(f="~/.docker/config.json"):

def get_auth_header():
try:
dockercloud.basic_auth = base64.b64encode("%s:%s" % (dockercloud.user, dockercloud.password))
cred = "%s:%s" % (dockercloud.user, dockercloud.password)
dockercloud.basic_auth = base64.b64encode(cred.encode()).decode()
except:
pass

try:
dockercloud.basic_auth = base64.b64encode("%s:%s" % (dockercloud.user, dockercloud.apikey))
cred = "%s:%s" % (dockercloud.user, dockercloud.apikey)
dockercloud.basic_auth = base64.b64encode(cred.encode()).decode()
except:
pass

Expand Down
6 changes: 3 additions & 3 deletions dockercloud/api/http.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,9 @@ def new_session():

def send_request(method, path, inject_header=True, **kwargs):
json = None
url = urljoin(dockercloud.rest_host.rstrip("/"), path.strip("/").encode("ascii", "ignore"))
if not url.endswith("/"):
url = "%s/" % url
url = urljoin(dockercloud.rest_host.encode(), path.strip("/").encode())
if not url.endswith(b"/"):
url = b"%s/" % url
user_agent = 'python-dockercloud/%s' % dockercloud.__version__
if dockercloud.user_agent:
user_agent = "%s %s" % (dockercloud.user_agent, user_agent)
Expand Down
1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
future==0.15.0
mock==2.0.0
requests==2.7.0
six==1.9.0
websocket-client==0.37.0
6 changes: 5 additions & 1 deletion tests/test_action.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
from __future__ import absolute_import

import unittest
import six

import unittest.mock as mock
if six.PY2:
import mock
elif six.PY3:
import unittest.mock as mock

import dockercloud
from .fake_api import *
Expand Down
6 changes: 3 additions & 3 deletions tests/test_auth.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from __future__ import absolute_import
from __future__ import absolute_import, print_function

import os
import tempfile
Expand All @@ -23,7 +23,7 @@ def tearDown(self):
def test_auth_authenticate(self, mock_verify_credential):
dockercloud.auth.authenticate(FAKE_USER, FAKE_PASSWORD)
mock_verify_credential.assert_called_with(FAKE_USER, FAKE_PASSWORD)
self.assertEqual(dockercloud.basic_auth, FAKE_BASIC_AUTH)
self.assertEqual(dockercloud.basic_auth, FAKE_BASIC_AUTH.encode('latin-1'))
self.tearDown()

def test_auth_is_authenticated(self):
Expand Down Expand Up @@ -75,7 +75,7 @@ def test_auth_get_auth_header(self):
dockercloud.basic_auth = FAKE_BASIC_AUTH
self.assertEqual({'Authorization': FAKE_DOCKERCLOUD_AUTH}, dockercloud.auth.get_auth_header())

print "===================="
print("====================")
dockercloud.dockercloud_auth = None
dockercloud.basic_auth = FAKE_BASIC_AUTH
self.assertEqual({'Authorization': 'Basic %s' % (FAKE_BASIC_AUTH)}, dockercloud.auth.get_auth_header())
Expand Down