conf.set('token',extras['token'])
snf = ComputeClient(conf)
- vm_name = entity.attributes['occi.compute.hostname']
+ vm_name = entity.attributes['occi.core.title']
info = snf.create_server(vm_name, flavor_id, image_id)
entity.attributes['occi.core.id'] = str(info['id'])
entity.attributes['occi.compute.architecture'] = SERVER_CONFIG['compute_arch']
+from kamaki.clients.compute import ComputeClient
+from kamaki.clients.cyclades import CycladesClient
+from kamaki.config import Config
+
from occi import registry
+from occi.core_model import Mixin
+from occi.backend import MixinBackend
+from occi.extensions.infrastructure import RESOURCE_TEMPLATE, OS_TEMPLATE
class snfRegistry(registry.NonePersistentRegistry):
An OCCI WSGI application.
'''
- def __call__(self, environ, response):
+ def refresh_images(self):
snf = ComputeClient(Config())
-
- #Up-to-date flavors and images
-
images = snf.list_images()
for image in images:
IMAGE_ATTRIBUTES = {'occi.core.id': str(image['id'])}
IMAGE = Mixin("http://schemas.ogf.org/occi/infrastructure#", str(image['name']), [OS_TEMPLATE], attributes = IMAGE_ATTRIBUTES)
- APP.register_backend(IMAGE, MixinBackend())
+ self.register_backend(IMAGE, MixinBackend())
+ def refresh_flavors(self):
+
+ snf = ComputeClient(Config())
flavors = snf.list_flavors()
for flavor in flavors:
details = snf.get_flavor_details(flavor['id'])
'occi.storage.size': details['disk'],
}
FLAVOR = Mixin("http://schemas.ogf.org/occi/infrastructure#", str(flavor['name']), [RESOURCE_TEMPLATE], attributes = FLAVOR_ATTRIBUTES)
- APP.register_backend(FLAVOR, MixinBackend())
+ self.register_backend(FLAVOR, MixinBackend())
+
+
+ def __call__(self, environ, response):
+
+ #Up-to-date flavors and images
- #TODO up-to-date compute instances
+ self.refresh_images()
+ self.refresh_flavors()
# token will be represented in self.extras
return self._call_occi(environ, response, security = None, token = environ['HTTP_AUTH_TOKEN'])