/** * Process a request for the characteristics of a PowerDatacenter. * * @param ev a SimEvent object * @pre ev != $null * @post $none */ protected void processResourceCharacteristicsRequest(SimEvent ev) { setDatacenterIdsList(CloudSim.getCloudResourceList()); setDatacenterCharacteristicsList(new HashMap<Integer, DatacenterCharacteristics>()); Log.printConcatLine(CloudSim.clock(), ": ", getName(), ": Cloud Resource List received with ", getDatacenterIdsList().size(), " resource(s)"); for (Integer datacenterId : getDatacenterIdsList()) { sendNow(datacenterId, CloudSimTags.RESOURCE_CHARACTERISTICS, getId()); } }
/** * Process a cloudlet return event. * * @param ev a SimEvent object * @pre ev != $null * @post $none */ protected void processCloudletReturn(SimEvent ev) { Cloudlet cloudlet = (Cloudlet) ev.getData(); getCloudletReceivedList().add(cloudlet); Log.printConcatLine(CloudSim.clock(), ": ", getName(), ": Cloudlet ", cloudlet.getCloudletId(), " received"); cloudletsSubmitted--; if (getCloudletList().size() == 0 && cloudletsSubmitted == 0) { // all cloudlets executed Log.printConcatLine(CloudSim.clock(), ": ", getName(), ": All Cloudlets executed. Finishing..."); clearDatacenters(); finishExecution(); } else { // some cloudlets haven't finished yet if (getCloudletList().size() > 0 && cloudletsSubmitted == 0) { // all the cloudlets sent finished. It means that some bount // cloudlet is waiting its VM be created clearDatacenters(); createVmsInDatacenter(0); } } }
/** * Create the submitted virtual machines in a datacenter. * * @param datacenterId Id of the chosen Datacenter * @pre $none * @post $none * @see #submitVmList(java.util.List) */ protected void createVmsInDatacenter(int datacenterId) { // send as much vms as possible for this datacenter before trying the next one int requestedVms = 0; String datacenterName = CloudSim.getEntityName(datacenterId); for (Vm vm : getVmList()) { if (!getVmsToDatacentersMap().containsKey(vm.getId())) { Log.printLine(CloudSim.clock() + ": " + getName() + ": Trying to Create VM #" + vm.getId() + " in " + datacenterName); sendNow(datacenterId, CloudSimTags.VM_CREATE_ACK, vm); requestedVms++; } } getDatacenterRequestedIdsList().add(datacenterId); setVmsRequested(requestedVms); setVmsAcks(0); }
int brokerId = broker.getId(); cloudletList = createCloudlet(brokerId, 10, 0); // creating 10 cloudlets broker.submitVmList(vmList); broker.submitCloudletList(cloudletList); List<Cloudlet> newList = broker.getCloudletReceivedList(); newList.addAll(globalBroker.getBroker().getCloudletReceivedList());
getVmsToDatacentersMap().put(vmId, datacenterId); getVmsCreatedList().add(VmList.getById(getVmList(), vmId)); Log.printConcatLine(CloudSim.clock(), ": ", getName(), ": VM #", vmId, " has been created in Datacenter #", datacenterId, ", Host #", VmList.getById(getVmsCreatedList(), vmId).getHost().getId()); } else { Log.printConcatLine(CloudSim.clock(), ": ", getName(), ": Creation of VM #", vmId, " failed in Datacenter #", datacenterId); incrementVmsAcks(); if (getVmsCreatedList().size() == getVmList().size() - getVmsDestroyed()) { submitCloudlets(); } else { if (getVmsRequested() == getVmsAcks()) { for (int nextDatacenterId : getDatacenterIdsList()) { if (!getDatacenterRequestedIdsList().contains(nextDatacenterId)) { createVmsInDatacenter(nextDatacenterId); return; if (getVmsCreatedList().size() > 0) { // if some vm were created submitCloudlets(); } else { // no vms created. abort Log.printLine(CloudSim.clock() + ": " + getName() + ": none of the required VMs could be created. Aborting"); finishExecution();
@Override public void processEvent(SimEvent ev) { switch (ev.getTag()) { case CREATE_BROKER: setBroker(createBroker(super.getName()+"_")); //Create VMs and Cloudlets and send them to broker setVmList(createVM(getBroker().getId(), 5, 100)); //creating 5 vms setCloudletList(createCloudlet(getBroker().getId(), 10, 100)); // creating 10 cloudlets broker.submitVmList(getVmList()); broker.submitCloudletList(getCloudletList()); CloudSim.resumeSimulation(); break; default: Log.printLine(getName() + ": unknown event type"); break; } }
int vmIndex = 0; List<Cloudlet> successfullySubmitted = new ArrayList<Cloudlet>(); for (Cloudlet cloudlet : getCloudletList()) { Vm vm; vm = getVmsCreatedList().get(vmIndex); } else { // submit to the specific vm vm = VmList.getById(getVmsCreatedList(), cloudlet.getVmId()); if (vm == null) { // vm was not created if(!Log.isDisabled()) { Log.printConcatLine(CloudSim.clock(), ": ", getName(), ": Postponing execution of cloudlet ", cloudlet.getCloudletId(), ": bount VM not available"); Log.printConcatLine(CloudSim.clock(), ": ", getName(), ": Sending cloudlet ", cloudlet.getCloudletId(), " to VM #", vm.getId()); sendNow(getVmsToDatacentersMap().get(vm.getId()), CloudSimTags.CLOUDLET_SUBMIT, cloudlet); cloudletsSubmitted++; vmIndex = (vmIndex + 1) % getVmsCreatedList().size(); getCloudletSubmittedList().add(cloudlet); successfullySubmitted.add(cloudlet); getCloudletList().removeAll(successfullySubmitted);
executedCloudlets.put(broker.getName(), 0D); List<Cloudlet> cloudletsList = broker.getCloudletSubmittedList(); for(Cloudlet cloudlet : cloudletsList) { if(cloudlet.getResourceId() == datacenter.getId()) { executedCloudlets.put(broker.getName(), executedCloudlets.get(broker.getName()) + 1); vmIds.add(cloudlet.getVmId()); deployedVms.put(broker.getName(), Double.valueOf(String.valueOf(vmIds.size()))); costs.put(broker.getName(), datacenter.getDebts().get(broker.getId()));
broker.submitVmList(vmList); broker.submitCloudletList(cloudletList); List<Cloudlet> newList = broker.getCloudletReceivedList(); Log.printLine("Received " + newList.size() + " cloudlets");
this.name = broker.getName(); this.vmsUsedBandwidth = new HashMap<Integer, TreeMap<Double, Double>>(); cloudletsPerVm = new TreeMap<String, Integer>(); List<Vm> vmsList = broker.getVmList(); ReportDataDAO rdDAO = new ReportDataDAO(); for(Vm vm : vmsList) { List<Cloudlet> cloudletsList = broker.getCloudletSubmittedList(); for(Cloudlet cloudlet : cloudletsList) { List<Double> timesOfExecution = new ArrayList<Double>();
/** * Destroy all virtual machines running in datacenters. * * @pre $none * @post $none */ protected void clearDatacenters() { for (Vm vm : getVmsCreatedList()) { Log.printConcatLine(CloudSim.clock(), ": " + getName(), ": Destroying VM #", vm.getId()); sendNow(getVmsToDatacentersMap().get(vm.getId()), CloudSimTags.VM_DESTROY, vm); } getVmsCreatedList().clear(); }
@Override protected void init(String inputFolder) { try { CloudSim.init(1, Calendar.getInstance(), false); broker = Helper.createBroker(); int brokerId = broker.getId(); cloudletList = PlanetLabHelper.createCloudletListPlanetLab(brokerId, inputFolder); vmList = Helper.createVmList(brokerId, cloudletList.size()); hostList = Helper.createHostList(PlanetLabConstants.NUMBER_OF_HOSTS); } catch (Exception e) { e.printStackTrace(); Log.printLine("The simulation has been terminated due to an unexpected error"); System.exit(0); } }
/** * Generates a log. * * @param datacentersList a list of all datacenters. * @param brokersList a list of all brokers. * @see LogIO * @since 1.0 */ LogReport(List<PowerDatacenter> datacentersList, List<DatacenterBroker> brokersList) throws IOException, URISyntaxException { html = FileIO.readStringFromResource("cloudreports/gui/reports/resources/log.html"); SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss dd/MM/yyyy"); String timeAndDate = sdf.format(Calendar.getInstance().getTime()); html = html.replace("<!--INSERT_TIME-->", timeAndDate.split(" ")[0]); html = html.replace("<!--INSERT_DATE-->", timeAndDate.split(" ")[1]); Log.printLine(); for(DatacenterBroker broker : brokersList) { List<Cloudlet> list = broker.getCloudletSubmittedList(); printCloudletList(list, broker.getName()); Log.printLine("\n"); } printDebts(datacentersList); String log = LogIO.getLogStringFromFile(); log = log.replace("\n", "<br />"); html = html.replace("<!--INSERT_LOG-->", log); }
private static DatacenterBroker createBroker(){ DatacenterBroker broker = null; try { broker = new DatacenterBroker("Broker"); } catch (Exception e) { e.printStackTrace(); return null; } return broker; }
/** * This method is used to send to the broker the list with virtual machines that must be * created. * * @param list the list * @pre list !=null * @post $none */ public void submitVmList(List<? extends Vm> list) { getVmList().addAll(list); }
@Override public void shutdownEntity() { Log.printConcatLine(getName(), " is shutting down..."); }
int brokerId = broker.getId(); cloudletList = createCloudlet(brokerId,40); // creating 40 cloudlets broker.submitVmList(vmlist); broker.submitCloudletList(cloudletList); List<Cloudlet> newList = broker.getCloudletReceivedList();
int brokerId = broker.getId(); List<Vm> vmList = createVms(cr.getVmList(), brokerId); if (vmList == null) { broker.submitVmList(vmList); List<Cloudlet> cloudletList = createCloudlets(up, brokerId, new CustomerRegistryDAO().getNumOfVms(cr.getId())); if (cloudletList == null) { broker.submitCloudletList(cloudletList); map.put(cr.getName(), broker);