def apply_plan(**kwargs): """ Applies a provisioning plan to the cluster Variables: None Arguments: None Data Block: { profiles: {}, # A dictionary of profiles where name of profile is the key flex_nodes: [] # A list machine mac addresses that will be used for flex } Result example: {"success": true} """ data = request.json if not data: return make_api_response({}, "There are not profiles to apply", 400) profiles = data.get('profiles', {}) flex_nodes = data.get("flex_nodes", []) # Save flex nodes for idx, mac in enumerate(flex_nodes): profile_id = "flex.%s" % idx STORAGE.save_profile(profile_id, { 'services': {}, 'system_overrides': {}, 'virtual_machines': {} }) node = STORAGE.get_node(mac) node['profile'] = profile_id STORAGE.save_node(mac, node) # Save profiles for profile_name, profile_data in profiles.iteritems(): mac = profile_name.rsplit("-", 1)[1] STORAGE.save_profile(profile_name, profile_data) node = STORAGE.get_node(mac) node['profile'] = profile_name STORAGE.save_node(mac, node) return make_api_response({"success": True})
def set_host(mac, *args, **kwargs): """ Set the host information Variables: mac => MAC Address of the host to get the info Arguments: None Data Block: { "profile": "Default profile", # Host current profile "machine_info": { # Host Machine info block "uid": "Core-001122334455", # Machine UID "ip": "127.0.0.1", # Machine IP "memory": "23.5", # Machine RAM (GB) "cores": 16, # Machine Num Cores "os": "Linux", # Machine OS "name": "computer1" }, # Machine Name "ip": "127.0.0.1", # Host IP "hostname": "computer1", # Host Name "enabled": true, # Is host enabled? "platform": { # Host platform block "node": "computer1", # Node name "system": "Linux", # Node system "machine": "x86_64", # Node Architecture "version": "#47-Ubuntu SMP", # Node Kernel version "release": "3.13.0-24", # Node Kernel release "proc": "x86_64" }, # Node proc Architecture "mac_address": "001122334455" # Host Mac address } Result example: { "status": "success" # Was saving successful ? } """ data = request.json if mac != data['mac_address']: raise AccessDeniedException("You are not allowed to change the host MAC Address.") return make_api_response(STORAGE.save_node(mac, data))