bootstrap-vz/providers/ec2/manifest.py

30 lines
1.1 KiB
Python
Raw Normal View History

2013-06-09 16:25:59 +02:00
import base
from common.exceptions import ManifestError
2013-05-02 19:13:35 +02:00
2013-06-09 16:25:59 +02:00
class Manifest(base.Manifest):
def validate(self, data):
super(Manifest, self).validate(data)
from os import path
2013-07-01 23:11:18 +02:00
schema_path = path.join(path.dirname(__file__), 'manifest-schema.json')
2013-06-23 23:37:21 +02:00
self.schema_validate(data, schema_path)
if data['volume']['backing'] == 'ebs':
if data['volume']['size'] % 1024 != 0:
msg = 'The volume size must be a multiple of 1024 when using EBS backing'
raise ManifestError(msg, self)
else:
schema_path = path.join(path.dirname(__file__), 'manifest-schema-s3.json')
self.schema_validate(data, schema_path)
2013-05-02 19:13:35 +02:00
def parse(self, data):
super(Manifest, self).parse(data)
self.credentials = data['credentials']
self.virtualization = data['virtualization']
2013-07-07 20:28:24 +02:00
self.image = data['image']
if data['volume']['backing'] == 'ebs':
self.ebs_volume_size = data['volume']['size'] / 1024
if 'loopback_dir' not in self.volume and self.volume['backing'].lower() == 's3':
self.volume['loopback_dir'] = '/tmp'
if 'bundle_dir' not in self.image and self.volume['backing'].lower() == 's3':
self.image['bundle_dir'] = '/tmp'