11# -*- coding: UTF-8 -*-
2- from pool import Pool , PoolElement , Template
2+ from pool import XMLElement , Pool , PoolElement , Template
33
44
5+ class AddressRange (XMLElement ):
6+ XML_TYPES = {
7+ 'id' : ["AR_ID" , lambda xml : int (xml .text )],
8+ 'size' : int ,
9+ #'template' : ['TEMPLATE', Template],
10+ }
11+
12+ def __init__ (self , xml ):
13+ super (AddressRange , self ).__init__ (xml )
14+ self ._convert_types ()
15+ self .id = self ['AR_ID' ] if self ['AR_ID' ] else None
16+
17+ class AddressRangeList (list ):
18+ def __init__ (self , xml ):
19+ self .xml = xml
20+ for element in self .xml :
21+ self .append (self ._factory (element ))
22+
23+ def _factory (self , xml ):
24+ v = AddressRange (xml )
25+ v ._convert_types ()
26+ return v
27+
528class VirtualNetwork (PoolElement ):
629 METHODS = {
730 'info' : 'vn.info' ,
831 'allocate' : 'vn.allocate' ,
932 'delete' : 'vn.delete' ,
1033 'publish' : 'vn.publish' ,
1134 'chown' : 'vn.chown' ,
12- 'addleases' : 'vn.addleases' ,
13- 'rmleases' : 'vn.rmleases'
1435 }
1536
1637 XML_TYPES = {
@@ -20,11 +41,12 @@ class VirtualNetwork(PoolElement):
2041 'uname' : str ,
2142 'gname' : str ,
2243 'name' : str ,
23- 'type' : int ,
44+ # 'type' : int,
2445 'bridge' : str ,
25- 'public' : bool ,
26- 'total_leases ' : int ,
46+ # 'public' : bool,
47+ 'used_leases ' : int ,
2748 'template' : ['TEMPLATE' , Template ],
49+ 'address_ranges' : ['AR_POOL' , AddressRangeList ],
2850 }
2951
3052 ELEMENT_NAME = 'VNET'
@@ -74,7 +96,6 @@ def chown(self, uid, gid):
7496 def __repr__ (self ):
7597 return '<oca.VirtualNetwork("%s")>' % self .name
7698
77-
7899class VirtualNetworkPool (Pool ):
79100 METHODS = {
80101 'info' : 'vnpool.info' ,
@@ -87,4 +108,3 @@ def _factory(self, xml):
87108 v = VirtualNetwork (xml , self .client )
88109 v ._convert_types ()
89110 return v
90-
0 commit comments