######### # 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 }