676: def retrieve
677: fail "Provider #{provider.class.name} is not functional on this host" if self.provider.is_a?(Puppet::Provider) and ! provider.class.suitable?
678:
679: result = Puppet::Resource.new(type, title)
680:
681:
682: result[:name] = self[:name] unless self[:name] == title
683:
684: if ensure_prop = property(:ensure) or (self.class.validattr?(:ensure) and ensure_prop = newattr(:ensure))
685: result[:ensure] = ensure_state = ensure_prop.retrieve
686: else
687: ensure_state = nil
688: end
689:
690: properties.each do |property|
691: next if property.name == :ensure
692: if ensure_state == :absent
693: result[property] = :absent
694: else
695: result[property] = property.retrieve
696: end
697: end
698:
699: result
700: end