1 package at.ac.tuwien.lsdc.federation;
3 import org.slf4j.Logger;
4 import org.slf4j.LoggerFactory;
6 import at.ac.tuwien.lsdc.JobGenerator;
7 import at.ac.tuwien.lsdc.SchedSimulator;
8 import at.ac.tuwien.lsdc.sched.AbstractScheduler;
9 import at.ac.tuwien.lsdc.sched.SchedulerB;
10 import at.ac.tuwien.lsdc.types.Application;
13 * Cloudpartners management. Class to be used to ask cloudpartners to take one
14 * of our APPs over to their infrastructure.
19 public class Federation {
23 private static final Logger LOG = LoggerFactory.getLogger(SchedulerB.class);
25 private int numPartners;
27 public Federation(int numPartners) {
28 this.numPartners = numPartners;
32 * Try to outsource app.
35 * Application to outsource.
36 * @return true, if application can be outsourced.
38 public boolean askToOutsource(Application app) {
39 if ((Math.random() * 100) < (10 * numPartners)) {
40 LOG.info("Outsource:" + app);
47 * Try to insource app.
49 * @return application to be insourced.
51 @SuppressWarnings("unused")
52 public Application askToInsource() {
58 long timestamp = AbstractScheduler.getCurrentTime() + JobGenerator.randomInt(1, 3);
60 if ((Math.random() * 100) < (10 * numPartners)) {
61 LOG.info("Insource app ");
62 switch (SchedSimulator.getScenario()) {
64 size = JobGenerator.randomInt(20, 100);
65 ram = JobGenerator.randomInt(30, 50);
66 cpu = JobGenerator.randomInt(50, 100);
67 duration = JobGenerator.randomInt(1, 50);
68 return new Application(timestamp, size, ram, cpu, duration);
70 size = JobGenerator.randomInt(150, 500);
71 ram = JobGenerator.randomInt(100, 700);
72 cpu = JobGenerator.randomInt(100, 400);
73 duration = JobGenerator.randomInt(1, 50);
74 return new Application(timestamp, size, ram, cpu, duration);
76 size = JobGenerator.randomInt(20, 500);
77 ram = JobGenerator.randomInt(30, 700);
78 cpu = JobGenerator.randomInt(50, 400);
79 duration = JobGenerator.randomInt(1, 50);
80 return new Application(timestamp, size, ram, cpu, duration);