[openstack-dev] [Nova][vmware] A new VMwareAPISession

Shawn Hartsock hartsock at acm.org
Thu Feb 6 22:23:40 UTC 2014


Hi folks,

Just following up on what we were talking about in IRC.

The BP: https://blueprints.launchpad.net/nova/+spec/vmware-soap-session-management

Is supposed to capture some of this work/discussion. Earlier in
Icehouse we had thought that having some kind of pseudo transaction
that could encompass a set of calls would be a nice way to allow a
method to "roll back" to some point and re-try a set of API calls as a
unit. This proved to be messy so I've abandoned that line of work.
Instead, (as pointed out by Matthew) the session details should not be
exposed at all above the Vim object. I think this is generally a good
direction the only problems would be timing of releases and refactors.

The core change I would like to propose to fit well with this idea of
restructuring around the Vim object revolves around how to verify and
terminate a session.

In particular, vim.SessionIsActive and vim.TerminateSession ... these
are intended as a system administrator's control API so a root user
could evict other users. Think of administrating a session through
these API as using 'kill -KILL <pid>' where this might be appropriate
if you were a root or super user cleaning out a session list. If you
were to log out of SSH using 'kill -KILL -1' it would work but it
would also be a little silly and would by pass logout scripts.

Individual users have the ability to check if their session is logged
in by using vim.CurrentTime or
ServiceContent.sessionManager.currentSession (you should see that
sessionManager and currentSession are not None). To log out your own
session there's a method you can used called vim.Logout which will
only affect the current session. The vim.TerminateSession can force
*any* open session off line so if there was a session ID bug in your
code you could randomly knock other driver instances off line which
could cause interesting unreproducible bugs for other users of the
system.

References (reading very carefully):
 * http://pubs.vmware.com/vsphere-55/index.jsp#com.vmware.wssdk.apiref.doc/vim.SessionManager.html
 * http://pubs.vmware.com/vsphere-55/index.jsp#com.vmware.wssdk.apiref.doc/vim.SessionManager.html#logout
 * http://pubs.vmware.com/vsphere-55/index.jsp#com.vmware.wssdk.apiref.doc/vim.SessionManager.html#sessionIsActive

... IN PROGRESS ...
https://review.openstack.org/#/q/status:open+project:openstack/nova+branch:master+topic:session-management-refactor,n,z

I will be shuffling this patch set around to reflect these changes.
I've tried to communicate the real purpose of this refactor, not to
introduce new API but to change how sessions are logged out and/or
validated.

As for
    https://blueprints.launchpad.net/oslo/+spec/vmware-api

I know we're trying to keep this a light weight fork-lift but as we
address other problems it's becoming clear to me we need to
incorporate certain key fixes.

I emailed with Vipin about https://review.openstack.org/#/c/65075/ he
is currently waiting for someone to direct him toward the correct
place to start committing this code. I'll have to refactor
https://review.openstack.org/#/c/63229/ so it can be used along side
that library.

I do have a question:
* if Vipin manages to ship an Oslo lib in icehouse is it too late for
us to change Nova over to that lib in Nova since the BP proposal
deadlines are past?

-- 
# Shawn.Hartsock



More information about the OpenStack-dev mailing list