import logging
import os
import time
+import base64
+import string
from novaclient.v1_1 import client
from heat.db import api as db_api
print '%s.GetAtt(%s)' % (self.name, key)
return unicode('not-this-surely')
+ def FnBase64(self, data):
+ '''
+http://docs.amazonwebservices.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-base64.html
+ '''
+ return base64.b64encode(data)
+
class GenericResource(Resource):
def __init__(self, name, json_snippet, stack):
super(GenericResource, self).__init__(name, json_snippet, stack)
self.insert_package_and_services(self.t, new_script)
else:
new_script.append(l)
-
- print '----------------------'
- try:
- print '\n'.join(new_script)
- except:
- print str(new_script)
- raise
- print '----------------------'
+ userdata = '\n'.join(new_script)
try:
con = self.t['Metadata']["AWS::CloudFormation::Init"]['config']
tenant = os.environ['OS_TENANT_NAME']
auth_url = os.environ['OS_AUTH_URL']
+
nova_client = client.Client(username, password, tenant, auth_url, service_type='compute', service_name='nova')
image_list = nova_client.images.list()
for o in image_list:
if o.name == flavor:
flavor_id = o.id
- server = nova_client.servers.create(name=self.name, image=image_id, flavor=flavor_id, key_name=key_name)
+ server = nova_client.servers.create(name=self.name, image=image_id, flavor=flavor_id, key_name=key_name, userdata=self.FnBase64(userdata))
while server.status == 'BUILD':
server.get()
time.sleep(0.1)