On 03/05/17 01:23, Monty Taylor wrote: > On 05/02/2017 12:11 AM, Adrian Turjak wrote: >> Hello OpenStack folks, >> >> As part of my dev work I recently put together a cool little tool which >> lets me have much easier access to the various OpenStack python clients >> in the scope of a python interpreter session. The first version was a >> little rough and without os-client-config support. The current version >> is now a plugin for the openstackclient and introduces a command that >> simply authenticates you, sets up the environment and helper tools, and >> then drops you into an ipython interactive session. The helper stuff is >> fairly simple, but combined with the features of ipython it really lets >> you start playing with the tools quickly, and by piggybacking onto >> openstackclient I get access to a lot of the niceties and inbuilt auth >> mechanisms. >> >> It is useful for learning, testing, or development against the various >> openstack client libraries, and even as an ops tool to quickly run some >> basic actions without having to resort to weird or silly bash command >> combinations. >> >> I personally use it to test out commands or libraries I'm not familiar >> with, or if I just need to work out what the output from something is. >> Often even doing once off admin actions that require parsing through and >> comparing different values and resources, but isn't worth writing a >> script for. >> >> My goal was to make something easy to use, and help almost anyone pick >> up and start using the various python clients without needing to dig >> through too much docs. >> >> https://pypi.python.org/pypi/openstack-interpreter > > Nice work! I'd love to help you connect the shade bits - as well as > raw REST clients. (I frequently just open a python REPL and type: > > import shade > shade.simple_logging(http_debug=True) > c = shade.openstack_cloud(cloud='vexxhost') > > and then do a bunch of stuff with c. In fact, that's my most common > form of interaction with OpenStack these days. :) Much the same here, although swap out shade for python-<project_name>client. I've been doing a lot in an ipython interpreter lately, so anything to get me up and running quickly helps, hence this silly little project.
> > So since you did the nice work to connect it to OSC, I'd love to help > you connect a few more options in there. (shade's constructor takes an > os-client-config OpenStackCloudConfig object and uses the session from > it, so if you've got occ support already, plumbing in shade with > shared session should be easy. If it's not, I'm happy to help sort > that out.) > > Monty I've got support for the various python-<project_name>client libraries, and adding new ones is easy, even if they have slightly different constructors (*shakes fist at SwiftClient*). I tend to use these the most, and prefer them over the openstackSDK so they were the first to be implemented in this. OpenstackSDK is also reasonably easy, but I want to create a nice little factory for configuring it because at first glance the Profile objects it uses are a little confusing, and it would be nice to abstract all of that away into a factory function that just spits out a connection object based on the params you give it but reusing the existing keystoneauth session. I should point out though that by os-client-config support I mainly mean, I'm letting OSC handle that, and then just pilfering the keystoneauth session it builds. :P Shade in this context is both really easy, and harder since I can't just give it the same session so it can reuse the same token. I've tried seeing if I can pilfer the OpenStackCloudConfig from OSC but passing that to shade seemed to break. If you run that interpreter command you can explore the OSC objects too. "self.app.cloud_config" or "self.app.cloud" appears to be close to what we want, but I can't get it to play nice with shade as it appears to be a OSC extension of the os-client-config class. If the interpreter is started from envvars you can do "cloud = openstack_cloud()" and shade does the right thing. If it was started with --os-cloud then you can also do "cloud = openstack_cloud(cloud=self.app.cloud.config.get('cloud'))". The latter also works with envvars as "self.app.cloud.config.get('cloud')" returns an empty string so shade looks at envvars. I can easily make a function that just returns shade with a new token, just kind of sucks that there is no way to pass it a valid session/token for it to reuse. Would be fantastic if you can take a gander at that as I don't know that much about Shade. I'd prefer to have this thing use a single shared session or token as much as possible. Cheers, Adrian __________________________________________________________________________ OpenStack Development Mailing List (not for usage questions) Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev