@classmethod
def from_name(cls, value):
    """Create an instance from a name or return an existing instance.

        New instances are created with :meth:`~ecl.resource.Resource.new`

        :param value: If ``value`` is an instance of this Resource type,
                      it is returned.
                      If ``value`` is a name which an instance of this
                      Resource type can be created with, one is created
                      and returned.

        :rtype: :class:`~ecl.resource.Resource` or the
                appropriate subclass.
        :raises: :exc:`ValueError` if ``value`` is not an instance of
                this Resource type or a valid ``name``.
        """
    return cls._from_attr(cls.name_attribute, value)
