def METHOD_NAME(self, image, size, cloud_data, network=None, timeout=300, interval=10):
    """Create node on cloud
    Args:
        image (str): Image to be used for node
        size (int): Node root volume size
        cloud_data (dict): Configuration steps after deployment
        network (str): Network to be attached to node
        timeout (int): Operation waiting time in sec
        interval (int): Operation retry time in sec
    """
    if self.id:
        msg = f"Node with name '{self.name}' already exists"
        log.error(msg)
        raise OperationFailedError(msg)
    # Get cloud image
    _image = self.cloud.get_image_by_name(image)
    if not _image:
        msg = f"Image '{image}' not available on cloud"
        log.error(msg)
        raise ResourceNotFoundError(msg)
    # Get cloud vm flavor
    _size = self.cloud.get_flavor_by_name(size)
    if not _size:
        msg = f"VM size '{size}' not available on cloud"
        log.error(msg)
        raise ResourceNotFoundError(msg)
    # Get network object
    if not network:
        network = self._get_available_network()
    _network = self.cloud.get_network_by_name(network)
    if not _network:
        msg = f"Network '{network}' not available on cloud"
        log.error(msg)
        raise ResourceNotFoundError(msg)
    log.info(f"Attaching network '{network}' to node '{self.name}'")
    # Create vm on cloud
    self.cloud.create_node(
        self.name, _image, _size, cloud_data, [_network], timeout, interval
    )
    # Wait until private ips attached to node
    self.cloud.wait_for_node_private_ips(self.name, timeout, interval)
    return True