# File lib/openshift-origin-controller/app/models/gear.rb, line 34
  def create
    if server_identity.nil?
      ret = nil
      begin
        self.app.ngears += 1
        self.container = OpenShift::ApplicationContainerProxy.find_available(self.node_profile)
        self.server_identity = self.container.id
        self.uid = self.container.reserve_uid
        self.group_instance.gears << self
        self.app.save
        ret = self.container.create(app,self)
        self.app.track_usage(self, UsageRecord::EVENTS[:begin]) if ret.exitcode == 0
      rescue Exception => e
        Rails.logger.debug e.message
        Rails.logger.debug e.backtrace.join("\n")
        ret = ResultIO.new
        ret.errorIO << e.message
        ret.exitcode = 5
      end

      ## recovery action if creation failed above
      if ret.exitcode != 0
        begin
          get_proxy.destroy(self.app, self)
        rescue Exception => e
        end
        self.app.ngears -= 1
        self.group_instance.gears.delete(self)
        self.app.save
        raise OpenShift::NodeException.new("Unable to create gear on node", 1, ret)
      end
      return ret
    end
  end