def parse_ext_attrs
      @extension_attributes = @init_data[:extension_attributes]
      @extension_attributes ||= []
      @ext_attrs = {}

      @extension_attributes.each do |ea|
        case ea[:type]

        when 'Date'
          begin # if there's random non-date data, the parse will fail
            ea[:value] = JSS.parse_datetime ea[:value]
          rescue
            true
          end

        when *NUMERIC_TYPES
          ea[:value] = ea[:value].to_i unless ea[:value].to_s.empty?
        end # case

        @ext_attrs[ea[:name]] = ea[:value]
      end # each do ea

      # remember changes as they happen so
      # we only send changes back to the server.
      @changed_eas = []
    end
def parse_ext_attrs
      @extension_attributes = @init_data[:extension_attributes]
      @extension_attributes ||= []
      @ext_attrs = {}

      @extension_attributes.each do |ea|
        case ea[:type]

        when 'Date'
          begin # if there's random non-date data, the parse will fail
            ea[:value] = JSS.parse_datetime ea[:value]
          rescue
            true
          end

        when *NUMERIC_TYPES
          ea[:value] = ea[:value].to_i unless ea[:value].to_s.empty?
        end # case

        @ext_attrs[ea[:name]] = ea[:value]
      end # each do ea

      # remember changes as they happen so
      # we only send changes back to the server.
      @changed_eas = []
    end
Mixed-in Instance Methods

 Populate @extension_attributes (the Array of Hashes that comes from the API)
 and @ext_attr_names, which is a Hash mapping the EA names to their
 values. This is called during initialization for all objects
 that mix in this module

 @return [void]