Changeset c3dcf48 for fedd/federation/access.py
- Timestamp:
- Dec 4, 2008 9:49:39 PM (15 years ago)
- Branches:
- axis_example, compt_changes, info-ops, master, version-1.30, version-2.00, version-3.01, version-3.02
- Children:
- 416292f
- Parents:
- 2ac63f7d
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
fedd/federation/access.py
r2ac63f7d rc3dcf48 80 80 self.projects = { } 81 81 self.keys = { } 82 self.types = { } 82 83 self.allocation = { } 83 84 self.state = { 84 85 'projects': self.projects, 85 86 'allocation' : self.allocation, 86 'keys' : self.keys 87 'keys' : self.keys, 88 'types': self.types 87 89 } 88 90 self.log = logging.getLogger("fedd.access") … … 331 333 self.projects = self.state['projects'] 332 334 self.keys = self.state['keys'] 335 self.types = self.state['types'] 333 336 334 337 self.log.debug("[read_state]: Read state from %s" % \ … … 653 656 self.state_lock.acquire() 654 657 self.allocation[aid] = { } 658 try: 659 pname = ap['project']['name']['localname'] 660 except KeyError: 661 pname = None 662 655 663 if dyn[1]: 656 try: 657 pname = ap['project']['name']['localname'] 658 except KeyError: 664 if not pname: 659 665 self.state_lock.release() 660 666 raise service_error(service_error.internal, … … 663 669 else: self.projects[pname] = 1 664 670 self.allocation[aid]['project'] = pname 671 672 if ap.has_key('resources'): 673 if not pname: 674 self.state_lock.release() 675 raise service_error(service_error.internal, 676 "Misformed allocation response?") 677 self.allocation[aid]['types'] = set() 678 nodes = ap['resources'].get('node', []) 679 for n in nodes: 680 for h in n.get('hardware', []): 681 if self.types.has_key((pname, h)): 682 self.types[(pname, h)] += 1 683 else: 684 self.types[(pname, h)] = 1 685 self.allocation[aid]['types'].add((pname,h)) 686 665 687 666 688 self.allocation[aid]['keys'] = [ ] … … 680 702 "Misformed allocation response?") 681 703 704 682 705 self.allocation[aid]['owners'] = owners 683 706 self.write_state() … … 741 764 del_users = { } 742 765 del_project = None 766 del_types = set() 767 743 768 if self.allocation.has_key(aid): 744 769 self.log.debug("Found allocation for %s" %aid) … … 759 784 del_project = pname 760 785 del self.projects[pname] 786 787 if self.allocation[aid].has_key('types'): 788 for t in self.allocation[aid]['types']: 789 self.types[t] -= 1 790 if self.types[t] == 0: 791 if not del_project: del_project = t[0] 792 del_types.add(t[1]) 793 del self.types[t] 761 794 762 795 del self.allocation[aid] … … 776 809 if users: 777 810 msg['project']['user'] = users 811 if len(del_types) > 0: 812 msg['resources'] = { 'node': \ 813 [ {'hardware': [ h ] } for h in del_types ]\ 814 } 778 815 if self.allocate_project.release_project: 779 816 msg = { 'ReleaseProjectRequestBody' : msg}
Note: See TracChangeset
for help on using the changeset viewer.