1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 """
17 Resource class and its manager for subnet pools in Compute API v2
18 """
19
20 from yakumo import base
21 from yakumo.constant import UNDEF
22 from yakumo import mapper
23 from yakumo import utils
24
25
26 ATTRIBUTE_MAPPING = [
27 ('id', 'id', mapper.Noop),
28 ('name', 'name', mapper.Noop),
29 ('prefixes', 'prefixes', mapper.Noop),
30 ('ip_version', 'ip_version', mapper.Noop),
31 ('min_prefixlen', 'min_prefixlen', mapper.Noop),
32 ('default_prefixlen', 'default_prefixlen', mapper.Noop),
33 ('max_prefixlen', 'max_prefixlen', mapper.Noop),
34 ('default_quota', 'default_quota', mapper.Noop),
35 ('is_shared', 'shared', mapper.Noop,),
36 ('address_scope_id', 'address_scope_id', mapper.Noop),
37 ('project', 'tenant_id', mapper.Resource('project')),
38 ]
39
40
42 """Resource class for subnet pools in Compute API v2"""
43
47 """
48 Update a subnet pool
49
50 @keyword name: Subnet pool name
51 @type name: str
52 @keyword address_scope_id: UUID of address scope
53 @type address_scope_id: str
54 @keyword prefixes: a list of subnets
55 @type prefixes: [str]
56 @keyword default_prefixlen: Default prefix length
57 @type default_prefixlen: int
58 @keyword min_prefixlen: Minimum prefix length
59 @type min_prefixlen: int
60 @keyword max_prefixlen: Maximum prefix length
61 @type max_prefixlen: int
62 @keyword default_quota: Default quota
63 @type default_quota: int
64 @keyword project: Project
65 @type project: yakumo.project.Resource
66 @rtype: None
67 """
68 super(Resource, self).update(
69 name=name,
70 address_scope_id=address_scope_id,
71 prefixes=prefixes,
72 default_prefixlen=default_prefixlen,
73 min_prefixlen=min_prefixlen,
74 max_prefixlen=max_prefixlen,
75 default_quota=default_quota,
76 project=project)
77
78
80 """Manager class for subnet pools in Compute API v2"""
81
82 resource_class = Resource
83 service_type = 'network'
84 _attr_mapping = ATTRIBUTE_MAPPING
85 _json_resource_key = 'subnetpool'
86 _json_resources_key = 'subnetpools'
87 _url_resource_path = '/v2.0/subnetpools'
88
93 """
94 Create a subnet pool
95
96 @keyword name: Subnet pool name
97 @type name: str
98 @keyword address_scope_id: UUID of address scope
99 @type address_scope_id: str
100 @keyword prefixes: a list of subnets
101 @type prefixes: [str]
102 @keyword default_prefixlen: Default prefix length
103 @type default_prefixlen: int
104 @keyword min_prefixlen: Minimum prefix length
105 @type min_prefixlen: int
106 @keyword max_prefixlen: Maximum prefix length
107 @type max_prefixlen: int
108 @keyword default_quota: Default quota
109 @type default_quota: int
110 @keyword project: Project
111 @type project: yakumo.porject.Resource
112 @keyword is_shared: Whether the subnet pool is shared
113 @type is_shared: bool
114 @return: Created subnet pool
115 @rtype: yakumo.neutron.v2.subnet_pool.Resource
116 """
117 return super(Manager, self).create(
118 name=name,
119 address_scope_id=address_scope_id,
120 prefixes=prefixes,
121 default_prefixlen=default_prefixlen,
122 min_prefixlen=min_prefixlen,
123 max_prefixlen=max_prefixlen,
124 default_quota=default_quota,
125 project=project,
126 is_shared=is_shared)
127