Port the MAAS code to oauthlib.
This commit is contained in:
parent
c86cdd766f
commit
bc41baf9b8
@ -22,10 +22,11 @@ from __future__ import print_function
|
|||||||
|
|
||||||
from email.utils import parsedate
|
from email.utils import parsedate
|
||||||
import errno
|
import errno
|
||||||
import oauth.oauth as oauth
|
import oauthlib
|
||||||
import os
|
import os
|
||||||
import time
|
import time
|
||||||
import urllib2
|
|
||||||
|
from six.moves.urllib_request import Request, urlopen
|
||||||
|
|
||||||
from cloudinit import log as logging
|
from cloudinit import log as logging
|
||||||
from cloudinit import sources
|
from cloudinit import sources
|
||||||
@ -274,25 +275,34 @@ def check_seed_contents(content, seed):
|
|||||||
|
|
||||||
def oauth_headers(url, consumer_key, token_key, token_secret, consumer_secret,
|
def oauth_headers(url, consumer_key, token_key, token_secret, consumer_secret,
|
||||||
timestamp=None):
|
timestamp=None):
|
||||||
consumer = oauth.OAuthConsumer(consumer_key, consumer_secret)
|
client = oauthlib.oauth1.Client(
|
||||||
token = oauth.OAuthToken(token_key, token_secret)
|
consumer_key,
|
||||||
|
client_secret=consumer_secret,
|
||||||
|
resource_owner_key=token_key,
|
||||||
|
resource_owner_secret=token_secret,
|
||||||
|
signature_method=oauthlib.SIGNATURE_PLAINTEXT)
|
||||||
|
uri, signed_headers, body = client.sign(url)
|
||||||
|
return signed_headers
|
||||||
|
|
||||||
if timestamp is None:
|
## consumer = oauth.OAuthConsumer(consumer_key, consumer_secret)
|
||||||
ts = int(time.time())
|
## token = oauth.OAuthToken(token_key, token_secret)
|
||||||
else:
|
|
||||||
ts = timestamp
|
|
||||||
|
|
||||||
params = {
|
## if timestamp is None:
|
||||||
'oauth_version': "1.0",
|
## ts = int(time.time())
|
||||||
'oauth_nonce': oauth.generate_nonce(),
|
## else:
|
||||||
'oauth_timestamp': ts,
|
## ts = timestamp
|
||||||
'oauth_token': token.key,
|
|
||||||
'oauth_consumer_key': consumer.key,
|
## params = {
|
||||||
}
|
## 'oauth_version': "1.0",
|
||||||
req = oauth.OAuthRequest(http_url=url, parameters=params)
|
## 'oauth_nonce': oauth.generate_nonce(),
|
||||||
req.sign_request(oauth.OAuthSignatureMethod_PLAINTEXT(),
|
## 'oauth_timestamp': ts,
|
||||||
consumer, token)
|
## 'oauth_token': token.key,
|
||||||
return req.to_header()
|
## 'oauth_consumer_key': consumer.key,
|
||||||
|
## }
|
||||||
|
## req = oauth.OAuthRequest(http_url=url, parameters=params)
|
||||||
|
## req.sign_request(oauth.OAuthSignatureMethod_PLAINTEXT(),
|
||||||
|
## consumer, token)
|
||||||
|
## return req.to_header()
|
||||||
|
|
||||||
|
|
||||||
class MAASSeedDirNone(Exception):
|
class MAASSeedDirNone(Exception):
|
||||||
@ -359,8 +369,8 @@ if __name__ == "__main__":
|
|||||||
creds[key] = cfg[key]
|
creds[key] = cfg[key]
|
||||||
|
|
||||||
def geturl(url, headers_cb):
|
def geturl(url, headers_cb):
|
||||||
req = urllib2.Request(url, data=None, headers=headers_cb(url))
|
req = Request(url, data=None, headers=headers_cb(url))
|
||||||
return (urllib2.urlopen(req).read())
|
return urlopen(req).read()
|
||||||
|
|
||||||
def printurl(url, headers_cb):
|
def printurl(url, headers_cb):
|
||||||
print("== %s ==\n%s\n" % (url, geturl(url, headers_cb)))
|
print("== %s ==\n%s\n" % (url, geturl(url, headers_cb)))
|
||||||
|
@ -8,7 +8,7 @@ PrettyTable
|
|||||||
|
|
||||||
# This one is currently only used by the MAAS datasource. If that
|
# This one is currently only used by the MAAS datasource. If that
|
||||||
# datasource is removed, this is no longer needed
|
# datasource is removed, this is no longer needed
|
||||||
oauth
|
oauthlib
|
||||||
|
|
||||||
# This one is currently used only by the CloudSigma and SmartOS datasources.
|
# This one is currently used only by the CloudSigma and SmartOS datasources.
|
||||||
# If these datasources are removed, this is no longer needed
|
# If these datasources are removed, this is no longer needed
|
||||||
|
@ -4,11 +4,7 @@ import shutil
|
|||||||
import tempfile
|
import tempfile
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
# XXX DataSourceMAAS must be ported to oauthlib for Python 3
|
from cloudinit.sources import DataSourceMAAS
|
||||||
import six
|
|
||||||
if not six.PY3:
|
|
||||||
from cloudinit.sources import DataSourceMAAS
|
|
||||||
|
|
||||||
from cloudinit import url_helper
|
from cloudinit import url_helper
|
||||||
from ..helpers import populate_dir
|
from ..helpers import populate_dir
|
||||||
|
|
||||||
@ -18,7 +14,6 @@ except ImportError:
|
|||||||
import mock
|
import mock
|
||||||
|
|
||||||
|
|
||||||
@unittest.skipIf(six.PY3, 'DataSourceMAAS must be ported to oauthlib')
|
|
||||||
class TestMAASDataSource(unittest.TestCase):
|
class TestMAASDataSource(unittest.TestCase):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user