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
-
std::shared_ptr<Node> addChildStorageServer(const std::string &hostname, const std::string &mount_point, WRENCH_PROPERTY_COLLECTION_TYPE storage_property_list = {}, WRENCH_MESSAGE_PAYLOADCOLLECTION_TYPE storage_messagepayload_list = {}, WRENCH_PROPERTY_COLLECTION_TYPE node_property_list = {}, WRENCH_MESSAGE_PAYLOADCOLLECTION_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
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
- Throws:
std::invalid_argument –
-
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
-
virtual double getBufferSize() const override
Determine the storage service’s buffer size.
- Returns:
a size in bytes
-
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
-
virtual double getLoad() override
Get the load of the underlying storage service.
- Returns:
the load on the service
-
Node *getParent()
A Meta tree traversal to get the parent of this node.
- Returns:
pointer supervisor. Will be nullptr if root
-
virtual double 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
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
-
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
- Throws:
std::invalid_argument –
-
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
@brief write a file on this node.
- Parameters:
answer_mailbox – a mailbox on which to send the answer messagej
location – a location
wait_for_answer – true if this method should wait for the answer, false otherwise
@throw std::invalid_argument
-
std::shared_ptr<Node> addChildStorageServer(const std::string &hostname, const std::string &mount_point, WRENCH_PROPERTY_COLLECTION_TYPE storage_property_list = {}, WRENCH_MESSAGE_PAYLOADCOLLECTION_TYPE storage_messagepayload_list = {}, WRENCH_PROPERTY_COLLECTION_TYPE node_property_list = {}, WRENCH_MESSAGE_PAYLOADCOLLECTION_TYPE node_messagepayload_list = {})