Creating a simple storage service


A Simple storage service is the simplest possible abstraction for a service that can store and provide access to workflow files. It has a certain storage capacity, and provides write, read, and delete operations on files. In addition, higher-level semantics such as copying a file directly from a storage service to another are provided.

Creating a Simple storage service

In WRENCH, a Simple storage service represents a storage service (wrench::StorageService), which is defined by the wrench::SimpleStorageService class. An instantiation of a Simple storage service requires the following parameters:

  • The name of a host on which to start the service;

  • A list of mount points (corresponding to disks attached to the host); and

  • Maps (std::map) of configurable properties (wrench::SimpleStorageServiceProperty) and configurable message payloads (wrench::SimpleStorageServiceMessagePayload).

The example below creates an instance of a Simple storage service that runs on host BigDisk, has access to the disks mounted at paths /data/ and /home/ at host BigDisk. Furthermore, the number of maximum concurrent data connections supported by the service is configured to be 8, and the message sent to the service to find out its free space is configured to be 1KiB:

auto storage_service = simulation->add(
                                      {"/data/", "/home/"},
                                      {{wrench::SimpleStorageServiceProperty::MAX_NUM_CONCURRENT_DATA_CONNECTIONS, "8"}},
                                      {{wrench::SimpleStorageServiceMessagePayload::FREE_SPACE_REQUEST_MESSAGE_PAYLOAD, 1024}}));

See the documentation of wrench::SimpleStorageServiceProperty and wrench::SimpleStorageServiceMessagePayload for all possible configuration options.

Also see the simulators in the examples/workflow_api/basic-examples/* and examples/action_api/* directories, which all use simple storage services.