    # File lib/chef/environment.rb, line 186
        def update_from_params(params)
          # reset because everything we need will be in the params, this is necessary because certain constraints
          # may have been removed in the params and need to be removed from cookbook_versions as well.
          bkup_cb_versions = cookbook_versions
          cookbook_versions(Hash.new)
          valid = true

          begin
            name(params[:name])
          rescue Chef::Exceptions::ValidationFailed => e
            invalid_fields[:name] = e.message
            valid = false
          end
          description(params[:description])

          unless params[:cookbook_version].nil?
            params[:cookbook_version].each do |index, cookbook_constraint_spec|
              unless (cookbook_constraint_spec.nil? || cookbook_constraint_spec.size == 0)
                valid = valid && update_cookbook_constraint_from_param(index, cookbook_constraint_spec)
              end
            end
          end

          update_attributes_from_params(params)

          valid = validate_required_attrs_present && valid
          cookbook_versions(bkup_cb_versions) unless valid # restore the old cookbook_versions if valid is false
          valid
        end