Skip to content

Commit 4bbd032

Browse files
author
Dean Troyer
committed
Change app.restapi to app.client_manager.session
This is step 1 toward using Keystone client's session.Session as the primary session/requests interface in OSC. * Move the session create into ClientManager and rename 'restapi' attribute to 'session' * Set up ClientManager and session loggers * Fix container and object command references to restapi/api Change-Id: I013d81520b336c7a6422cd22c05d1d65655e64f8
1 parent 19b8605 commit 4bbd032

13 files changed

Lines changed: 293 additions & 180 deletions

File tree

openstackclient/common/clientmanager.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import pkg_resources
2020
import sys
2121

22+
from openstackclient.common import restapi
2223
from openstackclient.identity import client as identity_client
2324

2425

@@ -77,7 +78,18 @@ def __init__(self, token=None, url=None, auth_url=None,
7778
self._insecure = not verify
7879
else:
7980
self._cacert = verify
80-
self._insecure = True
81+
self._insecure = False
82+
83+
self.session = restapi.RESTApi(
84+
verify=verify,
85+
debug=True,
86+
)
87+
88+
# Get logging from root logger
89+
root_logger = logging.getLogger('')
90+
LOG.setLevel(root_logger.getEffectiveLevel())
91+
restapi_logger = logging.getLogger('restapi')
92+
restapi_logger.setLevel(root_logger.getEffectiveLevel())
8193

8294
self.auth_ref = None
8395

openstackclient/identity/client.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,17 @@ def make_client(instance):
6666
insecure=instance._insecure,
6767
trust_id=instance._trust_id,
6868
)
69+
70+
# TODO(dtroyer): the identity v2 role commands use this yet, fix that
71+
# so we can remove it
6972
instance.auth_ref = client.auth_ref
73+
74+
# NOTE(dtroyer): this is hanging around until restapi is replace by
75+
# ksc session
76+
instance.session.set_auth(
77+
client.auth_ref.auth_token,
78+
)
79+
7080
return client
7181

7282

openstackclient/object/v1/container.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ def take_action(self, parsed_args):
4545
self.log.debug('take_action(%s)', parsed_args)
4646

4747
data = lib_container.create_container(
48-
self.app.restapi,
48+
self.app.client_manager.session,
4949
self.app.client_manager.object_store.endpoint,
5050
parsed_args.container,
5151
)
@@ -71,7 +71,7 @@ def take_action(self, parsed_args):
7171
self.log.debug('take_action(%s)', parsed_args)
7272

7373
lib_container.delete_container(
74-
self.app.restapi,
74+
self.app.client_manager.session,
7575
self.app.client_manager.object_store.endpoint,
7676
parsed_args.container,
7777
)
@@ -140,7 +140,7 @@ def take_action(self, parsed_args):
140140
kwargs['full_listing'] = True
141141

142142
data = lib_container.list_containers(
143-
self.app.restapi,
143+
self.app.client_manager.session,
144144
self.app.client_manager.object_store.endpoint,
145145
**kwargs
146146
)
@@ -170,7 +170,7 @@ def take_action(self, parsed_args):
170170
self.log.debug('take_action(%s)', parsed_args)
171171

172172
data = lib_container.show_container(
173-
self.app.restapi,
173+
self.app.client_manager.session,
174174
self.app.client_manager.object_store.endpoint,
175175
parsed_args.container,
176176
)

openstackclient/object/v1/lib/container.py

Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -23,46 +23,46 @@
2323

2424

2525
def create_container(
26-
api,
26+
session,
2727
url,
2828
container,
2929
):
3030
"""Create a container
3131
32-
:param api: a restapi object
32+
:param session: a restapi object
3333
:param url: endpoint
3434
:param container: name of container to create
3535
:returns: dict of returned headers
3636
"""
3737

38-
response = api.put("%s/%s" % (url, container))
38+
response = session.put("%s/%s" % (url, container))
3939
url_parts = urlparse(url)
4040
data = {
4141
'account': url_parts.path.split('/')[-1],
4242
'container': container,
43+
'x-trans-id': response.headers.get('x-trans-id', None),
4344
}
44-
data['x-trans-id'] = response.headers.get('x-trans-id', None)
4545

4646
return data
4747

4848

4949
def delete_container(
50-
api,
50+
session,
5151
url,
5252
container,
5353
):
5454
"""Delete a container
5555
56-
:param api: a restapi object
56+
:param session: a restapi object
5757
:param url: endpoint
5858
:param container: name of container to delete
5959
"""
6060

61-
api.delete("%s/%s" % (url, container))
61+
session.delete("%s/%s" % (url, container))
6262

6363

6464
def list_containers(
65-
api,
65+
session,
6666
url,
6767
marker=None,
6868
limit=None,
@@ -72,7 +72,7 @@ def list_containers(
7272
):
7373
"""Get containers in an account
7474
75-
:param api: a restapi object
75+
:param session: a restapi object
7676
:param url: endpoint
7777
:param marker: marker query
7878
:param limit: limit query
@@ -85,7 +85,7 @@ def list_containers(
8585

8686
if full_listing:
8787
data = listing = list_containers(
88-
api,
88+
session,
8989
url,
9090
marker,
9191
limit,
@@ -95,7 +95,7 @@ def list_containers(
9595
while listing:
9696
marker = listing[-1]['name']
9797
listing = list_containers(
98-
api,
98+
session,
9999
url,
100100
marker,
101101
limit,
@@ -117,34 +117,35 @@ def list_containers(
117117
params['end_marker'] = end_marker
118118
if prefix:
119119
params['prefix'] = prefix
120-
return api.list(url, params=params)
120+
return session.get(url, params=params).json()
121121

122122

123123
def show_container(
124-
api,
124+
session,
125125
url,
126126
container,
127127
):
128128
"""Get container details
129129
130-
:param api: a restapi object
130+
:param session: a restapi object
131131
:param url: endpoint
132132
:param container: name of container to show
133133
:returns: dict of returned headers
134134
"""
135135

136-
response = api.head("%s/%s" % (url, container))
137-
url_parts = urlparse(url)
136+
response = session.head("%s/%s" % (url, container))
138137
data = {
139-
'account': url_parts.path.split('/')[-1],
138+
'account': response.headers.get('x-container-meta-owner', None),
140139
'container': container,
140+
'object_count': response.headers.get(
141+
'x-container-object-count',
142+
None,
143+
),
144+
'bytes_used': response.headers.get('x-container-bytes-used', None),
145+
'read_acl': response.headers.get('x-container-read', None),
146+
'write_acl': response.headers.get('x-container-write', None),
147+
'sync_to': response.headers.get('x-container-sync-to', None),
148+
'sync_key': response.headers.get('x-container-sync-key', None),
141149
}
142-
data['object_count'] = response.headers.get(
143-
'x-container-object-count', None)
144-
data['bytes_used'] = response.headers.get('x-container-bytes-used', None)
145-
data['read_acl'] = response.headers.get('x-container-read', None)
146-
data['write_acl'] = response.headers.get('x-container-write', None)
147-
data['sync_to'] = response.headers.get('x-container-sync-to', None)
148-
data['sync_key'] = response.headers.get('x-container-sync-key', None)
149150

150151
return data

openstackclient/object/v1/lib/object.py

Lines changed: 22 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -25,53 +25,53 @@
2525

2626

2727
def create_object(
28-
api,
28+
session,
2929
url,
3030
container,
3131
object,
3232
):
3333
"""Create an object, upload it to a container
3434
35-
:param api: a restapi object
35+
:param session: a restapi object
3636
:param url: endpoint
3737
:param container: name of container to store object
3838
:param object: local path to object
3939
:returns: dict of returned headers
4040
"""
4141

4242
full_url = "%s/%s/%s" % (url, container, object)
43-
response = api.put(full_url, data=open(object))
43+
response = session.put(full_url, data=open(object))
4444
url_parts = urlparse(url)
4545
data = {
4646
'account': url_parts.path.split('/')[-1],
4747
'container': container,
4848
'object': object,
49+
'x-trans-id': response.headers.get('X-Trans-Id', None),
50+
'etag': response.headers.get('Etag', None),
4951
}
50-
data['x-trans-id'] = response.headers.get('X-Trans-Id', None)
51-
data['etag'] = response.headers.get('Etag', None)
5252

5353
return data
5454

5555

5656
def delete_object(
57-
api,
57+
session,
5858
url,
5959
container,
6060
object,
6161
):
6262
"""Delete an object stored in a container
6363
64-
:param api: a restapi object
64+
:param session: a restapi object
6565
:param url: endpoint
6666
:param container: name of container that stores object
6767
:param container: name of object to delete
6868
"""
6969

70-
api.delete("%s/%s/%s" % (url, container, object))
70+
session.delete("%s/%s/%s" % (url, container, object))
7171

7272

7373
def list_objects(
74-
api,
74+
session,
7575
url,
7676
container,
7777
marker=None,
@@ -84,7 +84,7 @@ def list_objects(
8484
):
8585
"""Get objects in a container
8686
87-
:param api: a restapi object
87+
:param session: a restapi object
8888
:param url: endpoint
8989
:param container: container name to get a listing for
9090
:param marker: marker query
@@ -101,7 +101,7 @@ def list_objects(
101101

102102
if full_listing:
103103
data = listing = list_objects(
104-
api,
104+
session,
105105
url,
106106
container,
107107
marker,
@@ -117,7 +117,7 @@ def list_objects(
117117
else:
118118
marker = listing[-1]['name']
119119
listing = list_objects(
120-
api,
120+
session,
121121
url,
122122
container,
123123
marker,
@@ -131,7 +131,6 @@ def list_objects(
131131
data.extend(listing)
132132
return data
133133

134-
object_url = url
135134
params = {
136135
'format': 'json',
137136
}
@@ -147,32 +146,31 @@ def list_objects(
147146
params['prefix'] = prefix
148147
if path:
149148
params['path'] = path
150-
url = "%s/%s" % (object_url, container)
151-
return api.list(url, params=params)
149+
requrl = "%s/%s" % (url, container)
150+
return session.get(requrl, params=params).json()
152151

153152

154153
def show_object(
155-
api,
154+
session,
156155
url,
157156
container,
158157
obj,
159158
):
160159
"""Get object details
161160
162-
:param api: a restapi object
161+
:param session: a restapi object
163162
:param url: endpoint
164163
:param container: container name to get a listing for
165164
:returns: dict of object properties
166165
"""
167166

168-
response = api.head("%s/%s/%s" % (url, container, obj))
169-
url_parts = urlparse(url)
167+
response = session.head("%s/%s/%s" % (url, container, obj))
170168
data = {
171-
'account': url_parts.path.split('/')[-1],
169+
'account': response.headers.get('x-container-meta-owner', None),
172170
'container': container,
173171
'object': obj,
172+
'content-type': response.headers.get('content-type', None),
174173
}
175-
data['content-type'] = response.headers.get('content-type', None)
176174
if 'content-length' in response.headers:
177175
data['content-length'] = response.headers.get('content-length', None)
178176
if 'last-modified' in response.headers:
@@ -184,10 +182,10 @@ def show_object(
184182
'x-object-manifest', None)
185183
for key, value in six.iteritems(response.headers):
186184
if key.startswith('x-object-meta-'):
187-
data[key[len('x-object-meta-'):].title()] = value
185+
data[key[len('x-object-meta-'):].lower()] = value
188186
elif key not in (
189187
'content-type', 'content-length', 'last-modified',
190-
'etag', 'date', 'x-object-manifest'):
191-
data[key.title()] = value
188+
'etag', 'date', 'x-object-manifest', 'x-container-meta-owner'):
189+
data[key.lower()] = value
192190

193191
return data

0 commit comments

Comments
 (0)