wrench::XRootD::Node
-
class Node : public wrench::StorageService
An XRootD node, this can be either a supervisor or a storage server. All nodes are classified as storage services even though not all have physical storage Unless a node is also has an internal storage service, some normal storage service messages will error out. Only File Read, locate, and delete are supported at this time, anything else requires talking directly to a specific file server with physical storage. Nodes not directly be created, instead an XRootD Metavisor should create them.
Public Functions
-
Node(Deployment *deployment, const std::string &hostname, const WRENCH_PROPERTY_COLLECTION_TYPE &storage_property_list, const WRENCH_MESSAGE_PAYLOAD_COLLECTION_TYPE &storage_messagepayload_list)
Constructor, should not be used directly except by XRootD createNode.
- Parameters:
deployment – the XRootD deployment this node belongs to
hostname – the name of the host on which the service and its storage service should run
property_list – A property list
messagepayload_list – A Message Payload list
-
std::shared_ptr<Node> addChildStorageServer(const std::string &hostname, const std::string &mount_point, WRENCH_PROPERTY_COLLECTION_TYPE storage_property_list = {}, WRENCH_MESSAGE_PAYLOAD_COLLECTION_TYPE storage_messagepayload_list = {}, WRENCH_PROPERTY_COLLECTION_TYPE node_property_list = {}, WRENCH_MESSAGE_PAYLOAD_COLLECTION_TYPE node_messagepayload_list = {})
Adds a child, which will be a storage server, to a node.
- Parameters:
hostname – the name of the host on which the child will run
mount_point – the mount point at that host
storage_property_list – the storage server’s property list
storage_messagepayload_list – the storage server’s message payload list
node_property_list – the XRootD node’s property list
node_messagepayload_list – the XRootD node’s message payload list
- Returns:
The child
-
std::shared_ptr<Node> addChildSupervisor(const std::string &hostname)
Adds a child, which will be a supervisor, to a node.
- Parameters:
hostname – the name of the host on which the child will run
- Returns:
The child
Check the cache for a file.
- Parameters:
file – The file to check the cache for
- Returns:
true if the file is cached, false otherwise
Create a file at the storage service (in zero simulated time)
- Parameters:
file – a file
Create a file at the storage service (in zero simulated time)
- Parameters:
file – a file
path – a path
create a new file in the federation on this node. Use instead of wrench::Simulation::createFile when adding files to XRootD
- Parameters:
location – a file location, must be the same object as the function is invoked on
-
void createFile(const std::shared_ptr<FileLocation> &location) = 0
Create a file at the storage service (in zero simulated time)
- Parameters:
location – a location
Delete a file at the storage service (incurs simulated overheads)
- Parameters:
file – a file
Delete a file at the storage service (incurs simulated overheads)
- Parameters:
file – a file
path – a path
Delete a file at the storage service (incurs simulated overheads)
- Parameters:
location – a location
Delete a file on the storage service.
- Parameters:
answer_commport – the answer commport to which the reply from the server should be sent
location – the location to delete
wait_for_answer – whether this call should
-
virtual sg_size_t getBufferSize() const override
Determine the storage service’s buffer size.
- Returns:
a size in bytes
Get all cached locations of the file.
- Parameters:
file – The file to check the cache for
- Returns:
A set of valid cached files. Empty set if none are cached
-
std::shared_ptr<Node> getChild(unsigned int n)
A meta tree traversal operation to get the nth child of this node.
- Parameters:
n – The index of the child to receive. Nodes are in order added
- Returns:
the Child Nodes shared pointer, or nullptr if this node is a leaf
Get a file’s last write date at a location (in zero simulated time)
- Parameters:
location – the file location
- Returns:
the file’s last write date, or -1 if the file is not found
-
inline virtual std::shared_ptr<simgrid::fsmod::FileSystem> getFileSystem() override
Retrieve the simple storage service’s file system object.
-
virtual double getLoad() override
Get the load of the underlying storage service.
- Returns:
the load on the service
-
inline virtual std::string getMountPoint() override
Return the storage service’s default mountpoint, if any. If none, throws an std::runtime_error exception.
-
inline virtual std::set<std::string> getMountPoints() override
Return the storage service’s mountpoints. If none, throws an std::runtime_error exception.
-
Node *getParent()
A Meta tree traversal to get the parent of this node.
- Returns:
pointer supervisor. Will be nullptr if root
-
std::shared_ptr<SimpleStorageService> getStorageServer()
Gets the underlying storage server.
- Returns:
A pointer to the simple storage server for this file server
-
virtual sg_size_t getTotalSpace() override
Get the storage service’s total space (in zero simulated time)
- Returns:
a capacity in bytes
Determines whether a file is present at the storage service (in zero simulated time)
- Parameters:
file – a file
- Returns:
true if the file is present, false otherwise
Determines whether a file is present at the storage service (in zero simulated time)
- Parameters:
file – a file
path – a path
- Returns:
true if the file is present, false otherwise
Determines whether the storage service has the file. This doesn’t simulate anything and is merely a zero-simulated-time data structure lookup. If you want to simulate the overhead of querying the StorageService, instead use lookupFile().
- Parameters:
location – a location
- Returns:
true if the file is present, false otherwise
-
bool hasFile(const std::shared_ptr<FileLocation> &location) = 0
Determines whether a file is present at the storage service (in zero simulated time)
- Parameters:
location – a location
- Returns:
true if the file is present, false otherwise
-
virtual bool isBufferized() const override
Determine whether the storage service is bufferized.
- Returns:
true if bufferized, false otherwise
Lookup whether a file exists on the storage service (incurs simulated overheads)
- Parameters:
file – a file
- Returns:
true if the file is present, or false
Lookup whether a file exists on the storage service (incurs simulated overheads)
- Parameters:
file – a file
path – a path
- Returns:
true if the file is present, or false
Lookup whether a file exists at a location on the storage service (incurs simulated overheads)
- Parameters:
location – a location
- Returns:
true if the file is present, or false
Asks the storage service whether it holds a file.
- Parameters:
answer_commport – the answer commport to which the reply from the server should be sent
location – the location to lookup
- Returns:
true if the file is present, false otherwise
-
virtual int main() override
Main method of the daemon.
- Returns:
0 on termination
-
bool processNextMessage()
Process a received control message.
- Returns:
false if the daemon should terminate
Read a file at the storage service (incurs simulated overheads)
- Parameters:
file – a file
Read a file at the storage service (incurs simulated overheads)
- Parameters:
file – a file
path – a path
Read a file at the storage service (incurs simulated overheads)
- Parameters:
file – a file
path – a path
num_bytes – a number of bytes to read
Read a file at the storage service (incurs simulated overheads)
- Parameters:
file – a file
num_bytes – a number of bytes to read
Read a file at the storage service (incurs simulated overheads)
- Parameters:
location – a location
Read a file at the storage service (incurs simulated overheads)
- Parameters:
location – a location
num_bytes – a number of bytes to read
Read a file from the storage service.
- Parameters:
answer_commport – the commport on which to expect the answer
location – the location
num_bytes – the number of bytes to read
wait_for_answer – whether to wait for the answer
-
virtual void removeDirectory(const std::string &path) override
Remove a directory and all its content at the Node (in zero simulated time)
- Parameters:
path – a path
Remove a file at the storage service (in zero simulated time)
- Parameters:
file – a file
Remove a file at the storage service (in zero simulated time)
- Parameters:
file – a file
path – a path
remove a new file in the federation on this node.
- Parameters:
location – a file location, must be the same object as the function is invoked on
-
void removeFile(const std::shared_ptr<FileLocation> &location) = 0
Remove a file at the storage service (in zero simulated time)
- Parameters:
location – a location
Reserve space at the storage service.
- Parameters:
location – a location
- Returns:
true if success, false otherwise
Unreserve space at the storage service.
- Parameters:
location – a location
Write a file at the storage service (incurs simulated overheads)
- Parameters:
file – a file
Write a file at the storage service (incurs simulated overheads)
- Parameters:
file – a file
path – a path
Write a file at the storage service (incurs simulated overheads)
- Parameters:
location – a location
Synchronously write a file to the storage service.
- Parameters:
answer_commport – the commport on which to expect the answer
location – the location
num_bytes_to_write – the number of bytes to write to the file.
wait_for_answer – whether to wait for the answer
-
virtual void writeFile(S4U_CommPort *answer_commport, const std::shared_ptr<FileLocation> &location, sg_size_t num_bytes_to_write, bool wait_for_answer) override
write a file on this node.
- Parameters:
answer_commport – a commport on which to send the answer message
location – a location
num_bytes_to_write – A number of bytes to write
wait_for_answer – true if this method should wait for the answer, false otherwise
-
Node(Deployment *deployment, const std::string &hostname, const WRENCH_PROPERTY_COLLECTION_TYPE &storage_property_list, const WRENCH_MESSAGE_PAYLOAD_COLLECTION_TYPE &storage_messagepayload_list)