-
-
Notifications
You must be signed in to change notification settings - Fork 73
Kathara.model.Machine
- MACHINE_CAPABILITIES
- ALLOWED_VOLUME_MODES
A Kathara device.
Contains information about the device and the API object to interact with the Manager.
Attributes:
-
lab(Kathara.model.Lab): The Kathara network Scenario of the device. -
name(str): The name of the device. -
interfaces(collection.OrderedDict[int, Kathara.model.Link]): A list of the collision domains of the device. -
meta(Dict[str, Any]): Keys are meta properties name, values are meta properties values. -
api_object(Any): To interact with the current Kathara Manager. -
fs(fs.FS): The filesystem of the device. Contains files and configurations associated to it.
__init__(lab: 'LabPackage.Lab', name: str, **kwargs) → NoneCreate a new instance of a Kathara device.
Args:
-
lab(Kathara.model.Lab): The Kathara network scenario of the new device. -
name(str): The name of the device. -
**kwargs: Specifies the optional parameters of the device.
Returns: None
add_interface(
link: 'LinkPackage.Link',
number: int = None,
mac_address: str = None
) → InterfacePackage.InterfaceAdd an interface to the device attached to the specified collision domain.
Args:
-
link(Kathara.model.Link): The Kathara collision domain to attach. -
number(int): The number of the new interface. If it is None, the first free number is selected. -
mac_address(str): The MAC address of the interface. If None, a generated MAC address is associated when the Machine is started.
Returns:
-
Interface: The object associated to this interface.
Raises:
-
MachineCollisionDomainConflictError: If the interface number specified is already used on the device. -
MachineCollisionDomainConflictError: If the device is already connected to the collision domain.
add_meta(name: str, value: Any) → NoneAdd a meta property to the device.
Args:
-
name(str): The name of the property. -
value(Any): The value of the property.
Returns:
-
Optional[Any]: Previous value if meta was already assigned, None otherwise.
Raises:
-
MachineOptionError: If the specified value is not valid for the specified property.
check() → NoneSort interfaces and check if there are missing interface numbers.
Returns: None
Raises:
-
NonSequentialMachineInterfaceError: If there is a missing interface number.
copy_directory_from_path(src_path: str, dst_path: str) → NoneCopy a directory from a src_path in the host filesystem into a dst_path in the fs of the device.
Args:
-
src_path(str): The source path of the directory to copy. -
dst_path(str): The destination path on the device where to copy the directory.
Returns: None
create_file_from_list(lines: List[str], dst_path: str) → NoneCreate a file from a list of strings in the device fs. If fs is None, create it in the network scenario.
Args:
-
lines(List[str]): The list of strings representing the content of the file to create. -
dst_path(str): The absolute path of the fs where create the file.
Returns: None
Raises:
-
fs.errors.ResourceNotFound: If the path is not found.
create_file_from_path(src_path: str, dst_path: str) → NoneCreate a file in the device fs from an existing file on the host filesystem. If the fs is None, create it.
Args:
-
src_path(str): The path of the file on the host filesystem to copy in the fs object. -
dst_path(str): The absolute path of the fs where create the file.
Returns: None
Raises:
-
fs.errors.ResourceNotFound: If the path is not found.
create_file_from_stream(stream: Union[BinaryIO, TextIO], dst_path: str) → NoneCreate a file in the device fs from a stream. If fs is None, create it in the network scenario.
Args:
-
stream(Union[BinaryIO, TextIO]): The stream representing the content of the file to create. -
dst_path(str): The absolute path of the fs where create the file.
Returns: None
Raises:
-
UnsupportedOperation: If the stream is opened without read permissions. -
fs.errors.ResourceNotFound: If the path is not found.
create_file_from_string(content: str, dst_path: str) → NoneCreate a file from a string in the device fs. If fs is None, create it in the network scenario.
Args:
-
content(str): The string representing the content of the file to create. -
dst_path(str): The absolute path of the fs where create the file.
Returns: None
Raises:
-
fs.errors.ResourceNotFound: If the path is not found.
delete_line(
file_path: str,
line_to_delete: str,
first_occurrence: bool = False
) → intDelete a specified line in a file.
Args:
-
file_path(str): The path of the file to delete the line. -
line_to_delete(str): A string or a regex representing the line to delete. -
first_occurrence(bool): Deletes only first occurrence. Default is False.
Returns:
-
int: Number of times the line has been deleted.
Raises:
-
fs.errors.FileExpected: If the path is not a file. -
fs.errors.ResourceNotFound: If the path does not exist. -
LineNotFoundError: If the searched line is not found in the file.
get_cpu(multiplier: int = 1) → Optional[int]Get the CPU limit, multiplied by a specific multiplier.
User should pass a float value ranging from 0 to max user CPUs. Try to take it from options, or device meta. Otherwise, return None.
Args:
-
multiplier(int): A numeric multiplier for the CPU limit value.
Returns:
-
Optional[int]: The CPU limit of the device.
Raises:
-
MachineOptionError: If the CPU value specified is not valid.
get_envs() → Dict[str, Union[int, str]]Get the environment variables specified for the device.
Returns:
-
Dict[str, Union[int, str]]: Keys are environment variables to set, values are the values to apply.
get_exec_commands() → List[str]Get the device exec commands.
Returns:
-
List[str]: The list containing the additional commands.
get_image() → strGet the image of the device, if defined in options or device meta. If not, use default one.
Returns:
-
str: The name of the device image.
get_mem() → strGet memory limit, if defined in options. If not, use the value from device meta. Otherwise, return None.
Returns:
-
str: The memory limit of the device.
Raises:
-
MachineOptionError: If the memory value specified is not valid.
get_num_terms() → intGet the number of terminals to be opened for the device.
Returns:
-
int: The number of terminals to be opened.
Raises:
-
MachineOptionError: If the terminals number value specified is not valid.
get_ports() → Dict[Tuple[int, str], int]Get the port mapping of the device.
Returns:
-
Dict[(int, str), int]: Keys are pairs (host port, protocol), values specifies the guest port.
get_shell() → strGet the custom shell specified for the device.
Returns:
-
str: The path of the custom shell specified for connecting to the device.
get_sysctls() → Dict[str, Union[int, str]]Get the sysctls specified for the device.
Returns:
-
Dict[str, Union[int, str]]: Keys contain the sysctls to set, values are the values to apply.
get_ulimits() → Dict[str, Dict[str, int]]Get the ulimits of the device.
Returns:
-
Dict[str, Dict[str, int]]: A dictionary containing ulimits of the device.
get_volumes() → dict[str, str]Get the paths of the additional volumes mounted on the device.
Returns:
-
dict[str, str]: The paths of the additional volumes mounted on the device. Keys represent the paths on the host, while values represent the paths on the device.
is_bridged() → boolReturn True if the device is bridged, else return False.
Returns:
-
bool: True if the device is bridged, else False.
is_ipv6_enabled() → boolCheck if IPv6 is enabled on the device.
Returns:
-
bool: True if it is enabled, else False.
Raises:
-
MachineOptionError: If the IPv6 value specified is not valid.
is_privileged() → boolReturn True if the device is privileged, else return False.
Returns:
-
bool: True if the device is privileged, else False.
pack_data() → Optional[bytes]Pack machine data into a .tar.gz file and returns the tar content as a byte array.
While packing files, it also applies the win2linux patch in order to remove UTF-8 BOM.
Returns:
-
bytes: the tar content.
remove_interface(link: 'LinkPackage.Link') → NoneDisconnect the device from the specified collision domain.
Args:
-
link(Kathara.model.Link): The Kathara collision domain to disconnect.
Returns: None
Raises:
-
MachineCollisionDomainConflictError: If the device is not connected to the collision domain.
update_file_from_list(lines: List[str], dst_path: str) → NoneUpdate a file in the fs object from a list of strings.
Args:
-
lines(List[str]): The list of strings representing the content for updating the file. -
dst_path(str): The absolute path on the fs of the file to upload.
Returns: None
Raises:
-
InvocationError: If the fs is None. -
fs.errors.ResourceNotFound: If the path is not found in the fs.
update_file_from_string(content: str, dst_path: str) → NoneUpdate a file in the fs object from a string.
Args:
-
content(str): The string representing the content for updating the file. -
dst_path(str): The absolute path on the fs of the file to update.
Returns: None
Raises:
-
InvocationError: If the fs is None. -
fs.errors.ResourceNotFound: If the path is not found in the fs.
update_meta(args: Dict[str, Any]) → NoneUpdate the device metas from a dict.
Args:
-
args(Dict[str, Any]): Keys are the meta properties names, values are the updated meta properties values.
Returns: None
write_line_after(
file_path: str,
line_to_add: str,
searched_line: str,
first_occurrence: bool = False
) → intWrite a new line after a specific line in a file.
Args:
-
file_path(str): The path of the file to add the new line. -
line_to_add(str): The new line to add after the searched line. -
searched_line(str): A string or a regex representing the searched line. -
first_occurrence(bool): Inserts line only after the first occurrence. Default is False.
Returns:
-
int: Number of times the line has been added.
Raises:
-
fs.errors.FileExpected: If the path is not a file. -
fs.errors.ResourceNotFound: If the path does not exist. -
LineNotFoundError: If the searched line is not found in the file.
write_line_before(
file_path: str,
line_to_add: str,
searched_line: str,
first_occurrence: bool = False
) → intWrite a new line before a specific line in a file.
Args:
-
file_path(str): The path of the file to add the new line. -
line_to_add(str): The new line to add before the searched line. -
searched_line(str): A string or a regex representing the searched line. -
first_occurrence(bool): Inserts line only before the first occurrence. Default is False.
Returns:
-
int: Number of times the line has been added.
Raises:
-
fs.errors.FileExpected: If the path is not a file. -
fs.errors.ResourceNotFound: If the path does not exist. -
LineNotFoundError: If the searched line is not found in the file.
This file was automatically generated via lazydocs.
Website: kathara.org
Contact us: [email protected]