solar/solar/test/base.py

59 lines
1.8 KiB
Python

# Copyright 2015 Mirantis, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import os
import shutil
import tempfile
import unittest
import yaml
import time
from solar.core.resource import virtual_resource as vr
from solar.dblayer.model import Model, Replacer, ModelMeta, get_bucket
def patched_get_bucket_name(cls):
return cls.__name__ + str(int(time.time() * 10000))
Model.get_bucket_name = classmethod(patched_get_bucket_name)
class BaseResourceTest(unittest.TestCase):
def setUp(self):
self.storage_dir = tempfile.mkdtemp()
def tearDown(self):
shutil.rmtree(self.storage_dir)
def make_resource_meta(self, meta_yaml):
meta = yaml.load(meta_yaml)
inps = meta['input']
# automaticaly add location_id
inps.setdefault('location_id', {'value': '$uuid',
'reverse': True,
'schema': 'str!'})
meta_yaml = yaml.dump(meta)
path = os.path.join(self.storage_dir, meta['id'])
os.makedirs(path)
with open(os.path.join(path, 'meta.yaml'), 'w') as f:
f.write(meta_yaml)
return path
def create_resource(self, name, src, args=None):
args = args or {}
return vr.create(name, src, args=args)[0]