Releases: cloudsimplus/cloudsimplus
v8.5.2 - BugFix release
v8.5.0 Enables batch creation of VMs from a List into a single event
v8.4.0 Non-Live VM migration from/to public-cloud datacenters
- PR #439
- Close #437 (check example here)
- Close #438
- Close #440
v8.3.0 VM startup/shutdown delay and boot overhead support
- Close #435 (check available examples there)
v8.2.0 :: Introduces Vm lifeTime attribute
Provides uniformity in attribute names and renaming to avoid ambiguity
- Introduces a Vm lifeTime attribute (Cloudlet already had it)
- Makes Broker request VM destruction after reaching lifeTime
- Start and finishTime attributes were moved to the new Startable interface and StartableAbstract class. Now such attributes are uniform between Cloudlet, Vm and Host.
- Makes CustomerEntity extends Lifetimed and Startable
- Redesign to provide a default implementation for Lifetimed.isLifeTimeReached
- Renames Cloudlet.getActualCpuTime to getTotalExecutionTime to conform to the Vm method.
That method is now defined inside CustomerEntity interface. - Renames Cloudlet.execStartTime to startTime to conform to Vm.startTime
to avoid confusion and provide uniformity to method names - Renames Cloudlet.getWaitingTime to getStartWaitTime
- Renames Vm and Cloudlet (CustomerEntity) getWaitTime to getCreationWaitTime
- Renames Cloudlet and Vm getArrivedTime to getBrokerArrivalTime
- Renames Cloudlet.getArrivalTime to getDcArrivalTime
- Renames Vm.stopTime to Vm.finishTime to conform to Cloudlet.finishTime
- Renames Host.shutdownTime to finishTime
Examples Included
v8.1.0 - Adds support for HostPowerSpec to read power consumption data files
v8.0.0 Packages restructuring, Lombok support and code clean up
Introduction
CloudSim Plus started in 2016 (7 years ago, considering the date of this new release) as a fork of CloudSim in order to provide a more well-engineered, fully extensible, easier-to-use, more accurate, and reliable cloud simulation framework. All the changes performed were intended to make the framework easier to maintain and extend, while providing an industry-standard tool to carry out cloud computing research.
After all these years, this release is a major restructuring of the project that breaks some compatibility with previous versions.
It took a lot of thought before stepping ahead to make these changes. Despite CloudSim and CloudSim Plus having lots of similarities and being easy to migrate simulation scenarios to CloudSim Plus, internally they are very different at this time.
This way, in order to break the ties with CloudSim and enable a healthier and faster evolution, these structural changes presented below were performed.
1. Maven artifact
Maven artifact name changed from cloudsim-plus
to cloudsimplus
.
Despite the former is available at Maven Central, it's deprecated.
Use the following code to include CloudSim Plus 8 as a dependency into your pom.xml:
<dependency>
<groupId>org.cloudsimplus</groupId>
<artifactId>cloudsimplus</artifactId>
<version>8.0.0</version>
</dependency>
2. Packages restructuring
2.1 Moves all classes from org.cloudbus.cloudsim
to org.cloudsimplus
Everything in CloudSim Plus is now under the org.cloudsimplus
package.
Probably, there isn't a single class inherited from CloudSim which was not updated in CloudSim Plus. Most of them passed through a huge refactoring, remodeling and documentation improvement and extension.
Therefore, keeping these files inside the org.cloudbus.cloudsim
gives the wrong impression that the classes and interfaces are the same. CloudSim Plus just exists thanks to CloudSim. This way, all the copyright notes inside the original files were kept, as required to conform to CloudSim's license. Accordingly, all the credits to the original CloudSim authors are still given.
2.2 Makes CloudSim class abstract and package private, then introduces CloudSimPlus
class to be used as the Simulation engine.
In order to make it clear that the simulation scenarios are using CloudSim Plus, a new CloudSimPlus
subclass was created, moving all the new code this project introduced in the CloudSim
class to this new one.
3. Adds Lombok support
Adds Lombok support to reduce boilerplate code and verbosity.
Futhermore, it makes the code cleaner, concise and easier to document and maintain.
Lombok automatically changes the bytecode to introduce getters, setters, toString, equals, hashCode, builders and other features.
It needs IDE support, however all major IDEs (including VS Code Editor) currently have default support for it.
The introduction of Lombok enabled a thorough code clean-up, removing all boilerplate that was just polluting the code, making it harder to understand and maintain. Since these boilerplates were mixed inside the code that really matters, it just made it more difficult for new researchers to understand and extend the framework.
The code automatically produced by Lombok for getters, setters, equals and hashCode are well tested and avoids the introduction of bugs when the researcher has to implement them by him/herself. A smaller codebase means less code to maintain and test, increasing code coverage.
4. Renames attributes numberOfPes to pesNumber
In order to provide more concise names, Cloudlet
and Vm
interfaces had their getNumberOfPes()
and setNumberOfPes()
methods renamed to getPesNumber()
and setPesNumber()
. If you are passing this attribute to the Vm and Cloudlet constructor, you don't need to change anything on your simulation scenarios.
v7.3.3 :: Small bugfixes
- Fix NullPointerException when selecting target DC #422
- Fix column separator in CsvTable: changes from
;
to,
v7.3.2 :: Enables setting a target Datacenter for initially placing VMs
- Closes #415 (Link to available example there)