Revision 3b2984dc snf-cyclades-app/synnefo/db/pools/__init__.py
b/snf-cyclades-app/synnefo/db/pools/__init__.py | ||
---|---|---|
78 | 78 |
"""Return a value to the pool.""" |
79 | 79 |
if value is None: |
80 | 80 |
raise ValueError |
81 |
if not self.contains(value): |
|
82 |
raise InvalidValue("%s does not belong to pool." % value) |
|
81 | 83 |
index = self.value_to_index(value) |
82 | 84 |
self._release(index, external) |
83 | 85 |
|
84 | 86 |
def reserve(self, value, external=False): |
85 | 87 |
"""Reserve a value.""" |
88 |
if not self.contains(value): |
|
89 |
raise InvalidValue("%s does not belong to pool." % value) |
|
86 | 90 |
index = self.value_to_index(value) |
87 | 91 |
self._reserve(index, external) |
88 | 92 |
return True |
... | ... | |
114 | 118 |
else: |
115 | 119 |
self.available[index] = AVAILABLE |
116 | 120 |
|
117 |
def contains(self, value): |
|
118 |
index = self.value_to_index(value) |
|
121 |
def contains(self, value, index=False): |
|
122 |
if index is False: |
|
123 |
index = self.value_to_index(value) |
|
119 | 124 |
return index >= 0 and index < self.pool_size |
120 | 125 |
|
121 | 126 |
def count_available(self): |
... | ... | |
131 | 136 |
return self.pool_size - self.count_reserved() |
132 | 137 |
|
133 | 138 |
def is_available(self, value, index=False): |
139 |
if not self.contains(value, index=index): |
|
140 |
raise InvalidValue("%s does not belong to pool." % value) |
|
134 | 141 |
if not index: |
135 | 142 |
idx = self.value_to_index(value) |
136 | 143 |
else: |
... | ... | |
138 | 145 |
return self.pool[idx] == AVAILABLE |
139 | 146 |
|
140 | 147 |
def is_reserved(self, value, index=False): |
148 |
if not self.contains(value, index=index): |
|
149 |
raise InvalidValue("%s does not belong to pool." % value) |
|
141 | 150 |
if not index: |
142 | 151 |
idx = self.value_to_index(value) |
143 | 152 |
else: |
Also available in: Unified diff