| 198 | |
| 199 | |
| 200 | class FreshBucket(object): |
| 201 | |
| 202 | def __init__(self, bucket_name, keys=[], *args, **kwargs): |
| 203 | self.bucket_name = bucket_name |
| 204 | self.keys = keys |
| 205 | self.conn_args = args |
| 206 | self.conn_kwargs = kwargs |
| 207 | self.created_bucket = False |
| 208 | |
| 209 | def __enter__(self): |
| 210 | # Prefer using certs, when possible. |
| 211 | if boto_supports_certs(): |
| 212 | self.conn_kwargs.setdefault('validate_certs', True) |
| 213 | |
| 214 | # Clean up a dangling bucket from a previous test run, if |
| 215 | # necessary. |
| 216 | self.conn = apathetic_bucket_delete(self.bucket_name, |
| 217 | self.keys, |
| 218 | *self.conn_args, |
| 219 | **self.conn_kwargs) |
| 220 | |
| 221 | return self |
| 222 | |
| 223 | def create(self, *args, **kwargs): |
| 224 | bucket = insistent_bucket_create(self.conn, self.bucket_name, |
| 225 | *args, **kwargs) |
| 226 | self.created_bucket = True |
| 227 | |
| 228 | return bucket |
| 229 | |
| 230 | def __exit__(self, typ, value, traceback): |
| 231 | if not self.created_bucket: |
| 232 | return False |
| 233 | |
| 234 | insistent_bucket_delete(self.conn, self.bucket_name, self.keys) |
| 235 | |
| 236 | return False |
no outgoing calls