aboutsummaryrefslogtreecommitdiffstats
path: root/aria/multivim-plugin/nova_plugin/userdata.py
diff options
context:
space:
mode:
Diffstat (limited to 'aria/multivim-plugin/nova_plugin/userdata.py')
-rw-r--r--aria/multivim-plugin/nova_plugin/userdata.py50
1 files changed, 50 insertions, 0 deletions
diff --git a/aria/multivim-plugin/nova_plugin/userdata.py b/aria/multivim-plugin/nova_plugin/userdata.py
new file mode 100644
index 0000000000..ba63bb5328
--- /dev/null
+++ b/aria/multivim-plugin/nova_plugin/userdata.py
@@ -0,0 +1,50 @@
+#########
+# Copyright (c) 2015 GigaSpaces Technologies Ltd. All rights reserved
+#
+# 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 requests
+
+from cloudify import compute
+from cloudify import exceptions
+from cloudify import ctx
+
+
+def handle_userdata(server):
+
+ existing_userdata = server.get('userdata')
+ install_agent_userdata = ctx.agent.init_script()
+
+ if not (existing_userdata or install_agent_userdata):
+ return
+
+ if isinstance(existing_userdata, dict):
+ ud_type = existing_userdata['type']
+ if ud_type not in userdata_handlers:
+ raise exceptions.NonRecoverableError(
+ "Invalid type '{0}' for server userdata)".format(ud_type))
+ existing_userdata = userdata_handlers[ud_type](existing_userdata)
+
+ if not existing_userdata:
+ final_userdata = install_agent_userdata
+ elif not install_agent_userdata:
+ final_userdata = existing_userdata
+ else:
+ final_userdata = compute.create_multi_mimetype_userdata(
+ [existing_userdata, install_agent_userdata])
+ server['userdata'] = final_userdata
+
+
+userdata_handlers = {
+ 'http': lambda params: requests.get(params['url']).text
+}