Ignore:
Timestamp:
Nov 17, 2008 6:19:40 PM (15 years ago)
Author:
Ted Faber <faber@…>
Branches:
axis_example, compt_changes, info-ops, master, version-1.30, version-2.00, version-3.01, version-3.02
Children:
7583a62
Parents:
afa43a8
Message:

checkpoint of the resource management stuff

File:
1 edited

Legend:

Unmodified
Added
Removed
  • fedd/fedd_experiment_control.py

    rafa43a8 rd81971a  
    869869                "eventserver": e['eventServer'],
    870870                "project": unpack_id(p['name']),
    871                 "emulab" : e
     871                "emulab" : e,
     872                "allocID" : r['allocID'],
    872873                }
    873874        # Make the testbed name be the label the user applied
     
    883884                    tbparam[tb][key]= a['value']
    884885       
     886    def release_access(self, tb, aid):
     887        """
     888        Release access to testbed through fedd
     889        """
     890
     891        uri = self.tbmap.get(tb, None)
     892        if not uri:
     893            raise service_error(serice_error.server_config,
     894                    "Unknown testbed: %s" % tb)
     895
     896        # The basic request
     897        req = { 'allocID' : aid }
     898       
     899        # No retry loop here.  Proxy servers must correctly authenticate
     900        # themselves without help
     901
     902        try:
     903            ctx = fedd_ssl_context(self.cert_file,
     904                    self.trusted_certs, password=self.cert_pwd)
     905        except SSL.SSLError:
     906            raise service_error(service_error.server_config,
     907                    "Server certificates misconfigured")
     908
     909        loc = feddServiceLocator();
     910        port = loc.getfeddPortType(uri,
     911                transport=M2Crypto.httpslib.HTTPSConnection,
     912                transdict={ 'ssl_context' : ctx })
     913
     914        # Reconstruct the full request message
     915        msg = ReleaseAccessRequestMessage()
     916        msg.set_element_ReleaseAccessRequestBody(
     917                pack_soap(msg, "ReleaseAccessRequestBody", req))
     918
     919        try:
     920            resp = port.ReleaseAccess(msg)
     921        except ZSI.ParseException, e:
     922            raise service_error(service_error.req,
     923                    "Bad format message (XMLRPC??): %s" % str(e))
     924        except ZSI.FaultException, e:
     925            resp = e.fault.detail[0]
     926
     927        # better error coding
     928
     929
     930
    885931    def remote_splitter(self, uri, desc, master):
    886932
     
    15101556                    'name': [ { 'localname' : eid} ],\
    15111557                    'emulab': tbparams[k]['emulab'],\
     1558                    'allocID' : tbparams[k]['allocID'],\
    15121559                    'master' : k == master,\
    15131560                }
     
    17891836                    domain = fed['emulab']['domain']
    17901837                    host  = "%s%s" % (fed['emulab']['ops'], domain)
     1838                    aid = fed['allocID']
    17911839                except KeyError, e:
    17921840                    continue
     
    17971845                        'host': host,\
    17981846                        'eid': eid,\
     1847                        'aid': aid,\
    17991848                    }
    18001849            self.state_lock.release()
     
    18041853                self.stop_segment(tb, tbparams[tb]['eid'], tbparams)
    18051854
    1806             # Remove teh terminated experiment
     1855            # release the allocations
     1856            for tb in tbparams.keys():
     1857                self.release_access(tb, tbparams[tb]['aid'])
     1858
     1859            # Remove the terminated experiment
    18071860            self.state_lock.acquire()
    18081861            for id in ids:
Note: See TracChangeset for help on using the changeset viewer.