File tree Expand file tree Collapse file tree
openstackclient/object/v1 Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -150,6 +150,32 @@ def list_objects(
150150 return session .get (requrl , params = params ).json ()
151151
152152
153+ def save_object (
154+ session ,
155+ url ,
156+ container ,
157+ obj ,
158+ file = None
159+ ):
160+ """Save an object stored in a container
161+
162+ :param session: an authenticated keystoneclient.session.Session object
163+ :param url: endpoint
164+ :param container: name of container that stores object
165+ :param object: name of object to save
166+ :param file: local name of object
167+ """
168+
169+ if not file :
170+ file = obj
171+
172+ response = session .get ("%s/%s/%s" % (url , container , obj ), stream = True )
173+ if response .status_code == 200 :
174+ with open (file , 'wb' ) as f :
175+ for chunk in response .iter_content ():
176+ f .write (chunk )
177+
178+
153179def show_object (
154180 session ,
155181 url ,
Original file line number Diff line number Diff line change @@ -183,6 +183,42 @@ def take_action(self, parsed_args):
183183 ) for s in data ))
184184
185185
186+ class SaveObject (command .Command ):
187+ """Save an object locally"""
188+
189+ log = logging .getLogger (__name__ + ".SaveObject" )
190+
191+ def get_parser (self , prog_name ):
192+ parser = super (SaveObject , self ).get_parser (prog_name )
193+ parser .add_argument (
194+ "--file" ,
195+ metavar = "<filename>" ,
196+ help = "Downloaded object filename [defaults to object name]" ,
197+ )
198+ parser .add_argument (
199+ 'container' ,
200+ metavar = '<container>' ,
201+ help = 'Container name that has the object' ,
202+ )
203+ parser .add_argument (
204+ "object" ,
205+ metavar = "<object>" ,
206+ help = "Name of the object to save" ,
207+ )
208+ return parser
209+
210+ def take_action (self , parsed_args ):
211+ self .log .debug ("take_action(%s)" , parsed_args )
212+
213+ lib_object .save_object (
214+ self .app .client_manager .session ,
215+ self .app .client_manager .object_store .endpoint ,
216+ parsed_args .container ,
217+ parsed_args .object ,
218+ parsed_args .file ,
219+ )
220+
221+
186222class ShowObject (show .ShowOne ):
187223 """Show object information"""
188224
Original file line number Diff line number Diff line change @@ -277,6 +277,7 @@ openstack.object_store.v1 =
277277 object_create = openstackclient.object.v1.object:CreateObject
278278 object_delete = openstackclient.object.v1.object:DeleteObject
279279 object_list = openstackclient.object.v1.object:ListObject
280+ object_save = openstackclient.object.v1.object:SaveObject
280281 object_show = openstackclient.object.v1.object:ShowObject
281282
282283openstack.volume.v1 =
You can’t perform that action at this time.
0 commit comments