from APIWrapper import FogDirector import time, random, math from infrastructure import ciscorouter_size300 as infrastructure infrastructure.create() fg = FogDirector("127.0.0.1:5000") code = fg.authenticate("admin", "admin_123") if code == 401: print("Failed Authentication") DEVICES_NUMBER = 5 DEPLOYMENT_NUMBER = 30 # Adding devices for i in range(0, DEVICES_NUMBER): deviceId = i + 1 _, device1 = fg.add_device("10.10.20." + str(deviceId), "cisco", "cisco") # Uploading Application code, localapp = fg.add_app("./NettestApp2V1_lxc.tar.gz", publish_on_upload=True) for myapp_index in range(0, DEPLOYMENT_NUMBER): # Creating myapp1 endpoint dep = "dep" + str(myapp_index) _, myapp1 = fg.create_myapp(localapp["localAppId"], dep) # first installation r = random.random() deviceIp = "10.10.20." + str(math.floor(r * DEVICES_NUMBER) + 1)
from APIWrapper import FogDirector from infrastructure import ciscorouters_310pz_5b5m300s_withFails as infrastructure from collections import defaultdict import array, requests, simplejson, random, os infrastructure.create() MAX_SIMULATION_ITER = 15000 port = "5000" fd = FogDirector("127.0.0.1:"+port) code = fd.authenticate("admin", "admin_123") def bestFit(cpu, mem): _, devices = fd.get_devices() devices = [ dev for dev in devices["data"] if dev["capabilities"]["nodes"][0]["cpu"]["available"] >= cpu and dev["capabilities"]["nodes"][0]["memory"]["available"] >= mem] devices.sort(reverse=True, key=(lambda dev: (dev["capabilities"]["nodes"][0]["cpu"]["available"], dev["capabilities"]["nodes"][0]["memory"]["available"]) )) while len(devices) == 0: if simulation_counter() > 15000: print("Not able to find a bestfit. Simulation ends") exit() _, devices = fd.get_devices() devices = [ dev for dev in devices["data"] if dev["capabilities"]["nodes"][0]["cpu"]["available"] >= cpu and dev["capabilities"]["nodes"][0]["memory"]["available"] >= mem] devices.sort(reverse=True, key=(lambda dev: (dev["capabilities"]["nodes"][0]["cpu"]["available"], dev["capabilities"]["nodes"][0]["memory"]["available"]) )) best_fit = devices[0] return best_fit["ipAddress"], best_fit["deviceId"] def simulation_counter():
from APIWrapper import FogDirector import time, requests from infrastructure import fogdirmime_infra as infrastructure infrastructure.create() FOG_DIRECTOR_HOST = "127.0.0.1:5000" def reset_simulation(): url = "http://%s/simulationreset" % "127.0.0.1:5000" r = requests.get(url) return r.json() reset_simulation() fd = FogDirector(FOG_DIRECTOR_HOST) code = fd.authenticate("admin", "admin_123") if code == 401: print("Failed Authentication") # Adding devices _, device1 = fd.add_device("10.10.20.51", "cisco", "cisco") _, device2 = fd.add_device("10.10.20.52", "cisco", "cisco") _, device3 = fd.add_device("10.10.20.53", "cisco", "cisco") code, localapp = fd.add_app("./NettestApp2V1_lxc.tar.gz", publish_on_upload=True) _, myapp1 = fd.create_myapp(localapp["localAppId"], "dep1") _, myapp2 = fd.create_myapp(localapp["localAppId"], "dep2", minjobs=1) # Deploying on devices with default resources, # that are c1.small profile, defined by custom library