old_contents: #
  #    Licensed under the Apache License, Version 2.0 (the "License"); you may
  #    not use this file except in compliance with the License. You may obtain
  #    a copy of the License at
  #
  #         http://www.apache.org/licenses/LICENSE-2.0
  #
  #    Unless required by applicable law or agreed to in writing, software
  #    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  #    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  #    License for the specific language governing permissions and limitations
  #    under the License.
  
  from heat.engine.resources.openstack.nova import server
  
  
  class ServerUpdateAllowed(server.Server):
      '''Prevent any properties changes from replacing an existing server.
  
      '''
  
      update_allowed_properties = server.Server.properties_schema.keys()
  
  
  def resource_mapping():
      return {'OS::Nova::Server': ServerUpdateAllowed}
  
new_contents: #
  #    Licensed under the Apache License, Version 2.0 (the "License"); you may
  #    not use this file except in compliance with the License. You may obtain
  #    a copy of the License at
  #
  #         http://www.apache.org/licenses/LICENSE-2.0
  #
  #    Unless required by applicable law or agreed to in writing, software
  #    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  #    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  #    License for the specific language governing permissions and limitations
  #    under the License.
  
  from heat.engine.resources.openstack.nova import server
  
  
  class ServerUpdateAllowed(server.Server):
      '''Prevent any properties changes from replacing an existing server.
  
      '''
  
      update_allowed_properties = server.Server.properties_schema.keys()
  
      def needs_replace_with_prop_diff(self, changed_properties_set,
                                       after_props, before_props):
          return False
  
  
  def resource_mapping():
      return {'OS::Nova::Server': ServerUpdateAllowed}
  
subject: Fix no-replace-server to accurately preview update