Initialize freezer-scheduler with insecure mode for keystone v3

Add verify and insecure flags for freezer scheduler and apiclient in order to handle
insecure connections when keystone and freezer-api are available through https
Add support for keystone v2 and v3 in the windows scheduler
Add explicit parameters to apiclient for v3 connections

Change-Id: Ib950c85e3d8d2b192ec7ba60e4fe5641202d2960
This commit is contained in:
memo 2015-11-26 19:38:03 +00:00
parent bd93113b9a
commit d950bab933
6 changed files with 74 additions and 42 deletions

View File

@ -23,9 +23,10 @@ import exceptions
class ActionManager(object):
def __init__(self, client):
def __init__(self, client, verify=True):
self.client = client
self.endpoint = self.client.endpoint + '/v1/actions/'
self.verify = verify
@property
def headers(self):
@ -36,7 +37,8 @@ class ActionManager(object):
endpoint = self.endpoint + action_id
r = requests.post(endpoint,
data=json.dumps(doc),
headers=self.headers)
headers=self.headers,
verify=self.verify)
if r.status_code != 201:
raise exceptions.ApiClientException(r)
action_id = r.json()['action_id']
@ -44,7 +46,7 @@ class ActionManager(object):
def delete(self, action_id):
endpoint = self.endpoint + action_id
r = requests.delete(endpoint, headers=self.headers)
r = requests.delete(endpoint, headers=self.headers, verify=self.verify)
if r.status_code != 204:
raise exceptions.ApiClientException(r)
@ -52,14 +54,14 @@ class ActionManager(object):
data = json.dumps(search) if search else None
query = {'limit': int(limit), 'offset': int(offset)}
r = requests.get(self.endpoint, headers=self.headers,
params=query, data=data)
params=query, data=data, verify=self.verify)
if r.status_code != 200:
raise exceptions.ApiClientException(r)
return r.json()['actions']
def get(self, action_id):
endpoint = self.endpoint + action_id
r = requests.get(endpoint, headers=self.headers)
r = requests.get(endpoint, headers=self.headers, verify=self.verify)
if r.status_code == 200:
return r.json()
if r.status_code == 404:
@ -70,7 +72,7 @@ class ActionManager(object):
endpoint = self.endpoint + action_id
r = requests.patch(endpoint,
headers=self.headers,
data=json.dumps(update_doc))
data=json.dumps(update_doc), verify=self.verify)
if r.status_code != 200:
raise exceptions.ApiClientException(r)
return r.json()['version']

View File

@ -22,9 +22,10 @@ import exceptions
class BackupsManager(object):
def __init__(self, client):
def __init__(self, client, verify=True):
self.client = client
self.endpoint = self.client.endpoint + '/v1/backups/'
self.verify = verify
@property
def headers(self):
@ -33,7 +34,8 @@ class BackupsManager(object):
def create(self, backup_metadata):
r = requests.post(self.endpoint,
data=json.dumps(backup_metadata),
headers=self.headers)
headers=self.headers,
verify=self.verify)
if r.status_code != 201:
raise exceptions.ApiClientException(r)
backup_id = r.json()['backup_id']
@ -41,7 +43,7 @@ class BackupsManager(object):
def delete(self, backup_id):
endpoint = self.endpoint + backup_id
r = requests.delete(endpoint, headers=self.headers)
r = requests.delete(endpoint, headers=self.headers, verify=self.verify)
if r.status_code != 204:
raise exceptions.ApiClientException(r)
@ -61,7 +63,7 @@ class BackupsManager(object):
data = json.dumps(search) if search else None
query = {'limit': int(limit), 'offset': int(offset)}
r = requests.get(self.endpoint, headers=self.headers,
params=query, data=data)
params=query, data=data, verify=self.verify)
if r.status_code != 200:
raise exceptions.ApiClientException(r)
@ -69,7 +71,7 @@ class BackupsManager(object):
def get(self, backup_id):
endpoint = self.endpoint + backup_id
r = requests.get(endpoint, headers=self.headers)
r = requests.get(endpoint, headers=self.headers, verify=self.verify)
if r.status_code == 200:
return r.json()
if r.status_code == 404:

View File

@ -187,7 +187,11 @@ class Client(object):
auth_url=None,
session=None,
endpoint=None,
opts=None):
opts=None,
project_name=None,
user_domain_name=None,
project_domain_name=None,
verify=True):
self.opts = opts or build_os_option_parser(
argparse.ArgumentParser(description='Freezer Client')
@ -204,22 +208,32 @@ class Client(object):
self.opts.os_auth_url = auth_url
if endpoint:
self.opts.os_backup_url = endpoint
if project_name:
self.opts.os_project_name = project_name
if user_domain_name:
self.opts.user_domain_name = user_domain_name
if project_domain_name:
self.opts.project_domain_name = project_domain_name
# flag to initialize freezer-scheduler with insecure mode
self.verify = verify
self._session = session
self.version = version
self.backups = BackupsManager(self)
self.registration = RegistrationManager(self)
self.jobs = JobManager(self)
self.actions = ActionManager(self)
self.sessions = SessionManager(self)
self.backups = BackupsManager(self, verify=verify)
self.registration = RegistrationManager(self, verify=verify)
self.jobs = JobManager(self, verify=verify)
self.actions = ActionManager(self, verify=verify)
self.sessions = SessionManager(self, verify=verify)
@cached_property
def session(self):
if self._session:
return self._session
auth_plugin = get_auth_plugin(self.opts)
return ksc_session.Session(auth=auth_plugin)
return ksc_session.Session(auth=auth_plugin, verify=self.verify)
@cached_property
def endpoint(self):

24
jobs.py
View File

@ -22,9 +22,10 @@ import exceptions
class JobManager(object):
def __init__(self, client):
def __init__(self, client, verify=True):
self.client = client
self.endpoint = self.client.endpoint + '/v1/jobs/'
self.verify = verify
@property
def headers(self):
@ -36,7 +37,8 @@ class JobManager(object):
doc['client_id'] = doc.get('client_id', '') or self.client.client_id
r = requests.post(endpoint,
data=json.dumps(doc),
headers=self.headers)
headers=self.headers,
verify=self.verify)
if r.status_code != 201:
raise exceptions.ApiClientException(r)
job_id = r.json()['job_id']
@ -44,7 +46,7 @@ class JobManager(object):
def delete(self, job_id):
endpoint = self.endpoint + job_id
r = requests.delete(endpoint, headers=self.headers)
r = requests.delete(endpoint, headers=self.headers, verify=self.verify)
if r.status_code != 204:
raise exceptions.ApiClientException(r)
@ -52,7 +54,7 @@ class JobManager(object):
data = json.dumps(search) if search else None
query = {'limit': int(limit), 'offset': int(offset)}
r = requests.get(self.endpoint, headers=self.headers,
params=query, data=data)
params=query, data=data, verify=self.verify)
if r.status_code != 200:
raise exceptions.ApiClientException(r)
return r.json()['jobs']
@ -66,7 +68,7 @@ class JobManager(object):
def get(self, job_id):
endpoint = self.endpoint + job_id
r = requests.get(endpoint, headers=self.headers)
r = requests.get(endpoint, headers=self.headers, verify=self.verify)
if r.status_code == 200:
return r.json()
if r.status_code == 404:
@ -77,7 +79,8 @@ class JobManager(object):
endpoint = self.endpoint + job_id
r = requests.patch(endpoint,
headers=self.headers,
data=json.dumps(update_doc))
data=json.dumps(update_doc),
verify=self.verify)
if r.status_code != 200:
raise exceptions.ApiClientException(r)
return r.json()['version']
@ -97,7 +100,8 @@ class JobManager(object):
doc = {"start": None}
r = requests.post(endpoint,
headers=self.headers,
data=json.dumps(doc))
data=json.dumps(doc),
verify=self.verify)
if r.status_code != 202:
raise exceptions.ApiClientException(r)
return r.json()
@ -117,7 +121,8 @@ class JobManager(object):
doc = {"stop": None}
r = requests.post(endpoint,
headers=self.headers,
data=json.dumps(doc))
data=json.dumps(doc),
verify=self.verify)
if r.status_code != 202:
raise exceptions.ApiClientException(r)
return r.json()
@ -137,7 +142,8 @@ class JobManager(object):
doc = {"abort": None}
r = requests.post(endpoint,
headers=self.headers,
data=json.dumps(doc))
data=json.dumps(doc),
verify=self.verify)
if r.status_code != 202:
raise exceptions.ApiClientException(r)
return r.json()

View File

@ -22,9 +22,10 @@ import exceptions
class RegistrationManager(object):
def __init__(self, client):
def __init__(self, client, verify=True):
self.client = client
self.endpoint = self.client.endpoint + '/v1/clients/'
self.verify = verify
@property
def headers(self):
@ -33,7 +34,8 @@ class RegistrationManager(object):
def create(self, client_info):
r = requests.post(self.endpoint,
data=json.dumps(client_info),
headers=self.headers)
headers=self.headers,
verify=self.verify)
if r.status_code != 201:
raise exceptions.ApiClientException(r)
client_id = r.json()['client_id']
@ -41,7 +43,8 @@ class RegistrationManager(object):
def delete(self, client_id):
endpoint = self.endpoint + client_id
r = requests.delete(endpoint, headers=self.headers)
r = requests.delete(endpoint, headers=self.headers,
verify=self.verify)
if r.status_code != 204:
raise exceptions.ApiClientException(r)
@ -65,14 +68,14 @@ class RegistrationManager(object):
data = json.dumps(search) if search else None
query = {'limit': int(limit), 'offset': int(offset)}
r = requests.get(self.endpoint, headers=self.headers,
params=query, data=data)
params=query, data=data, verify=self.verify)
if r.status_code != 200:
raise exceptions.ApiClientException(r)
return r.json()['clients']
def get(self, client_id):
endpoint = self.endpoint + client_id
r = requests.get(endpoint, headers=self.headers)
r = requests.get(endpoint, headers=self.headers, verify=self.verify)
if r.status_code == 200:
return r.json()
if r.status_code == 404:

View File

@ -22,9 +22,10 @@ import exceptions
class SessionManager(object):
def __init__(self, client):
def __init__(self, client, verify=True):
self.client = client
self.endpoint = self.client.endpoint + '/v1/sessions/'
self.verify = verify
@property
def headers(self):
@ -35,7 +36,8 @@ class SessionManager(object):
endpoint = self.endpoint + session_id
r = requests.post(endpoint,
data=json.dumps(doc),
headers=self.headers)
headers=self.headers,
verify=self.verify)
if r.status_code != 201:
raise exceptions.ApiClientException(r)
session_id = r.json()['session_id']
@ -43,7 +45,7 @@ class SessionManager(object):
def delete(self, session_id):
endpoint = self.endpoint + session_id
r = requests.delete(endpoint, headers=self.headers)
r = requests.delete(endpoint, headers=self.headers, verify=self.verify)
if r.status_code != 204:
raise exceptions.ApiClientException(r)
@ -51,7 +53,7 @@ class SessionManager(object):
data = json.dumps(search) if search else None
query = {'limit': int(limit), 'offset': int(offset)}
r = requests.get(self.endpoint, headers=self.headers,
params=query, data=data)
params=query, data=data, verify=self.verify)
if r.status_code != 200:
raise exceptions.ApiClientException(r)
return r.json()['sessions']
@ -63,7 +65,7 @@ class SessionManager(object):
def get(self, session_id):
endpoint = self.endpoint + session_id
r = requests.get(endpoint, headers=self.headers)
r = requests.get(endpoint, headers=self.headers, verify=self.verify)
if r.status_code == 200:
return r.json()
if r.status_code == 404:
@ -74,7 +76,8 @@ class SessionManager(object):
endpoint = self.endpoint + session_id
r = requests.patch(endpoint,
headers=self.headers,
data=json.dumps(update_doc))
data=json.dumps(update_doc),
verify=self.verify)
if r.status_code != 200:
raise exceptions.ApiClientException(r)
return r.json()['version']
@ -83,7 +86,7 @@ class SessionManager(object):
# endpoint /v1/sessions/{sessions_id}/jobs/{job_id}
endpoint = '{0}{1}/jobs/{2}'.format(self.endpoint, session_id, job_id)
r = requests.put(endpoint,
headers=self.headers)
headers=self.headers, verify=self.verify)
if r.status_code != 204:
raise exceptions.ApiClientException(r)
return
@ -95,7 +98,7 @@ class SessionManager(object):
r = ''
while retry:
r = requests.delete(endpoint,
headers=self.headers)
headers=self.headers, verify=self.verify)
if r.status_code == 204:
return
retry -= 1
@ -126,7 +129,8 @@ class SessionManager(object):
}}
r = requests.post(endpoint,
headers=self.headers,
data=json.dumps(doc))
data=json.dumps(doc),
verify=self.verify)
if r.status_code != 202:
raise exceptions.ApiClientException(r)
return r.json()
@ -151,7 +155,8 @@ class SessionManager(object):
}}
r = requests.post(endpoint,
headers=self.headers,
data=json.dumps(doc))
data=json.dumps(doc),
verify=self.verify)
if r.status_code != 202:
raise exceptions.ApiClientException(r)
return r.json()