cloudfoundry/cloud_controller_ng

View on GitHub
app/actions/droplet_upload.rb

Summary

Maintainability
A
0 mins
Test Coverage
module VCAP::CloudController
  class DropletUpload
    def upload_async(message:, droplet:, config:, user_audit_info:)
      logger.info("uploading droplet bits for droplet #{droplet.guid}")

      upload_job = build_job(message, droplet)
      enqueued_job = nil

      droplet.db.transaction do
        droplet.lock!

        droplet.state = DropletModel::PROCESSING_UPLOAD_STATE
        droplet.save

        Repositories::DropletEventRepository.record_upload(
          droplet,
          user_audit_info,
          droplet.app.name,
          droplet.space_guid,
          droplet.space.organization_guid
        )

        enqueued_job = Jobs::Enqueuer.new(upload_job, queue: Jobs::Queues.local(config)).enqueue_pollable
      end

      enqueued_job
    end

    private

    def build_job(message, droplet)
      Jobs::V3::DropletUpload.new(message.bits_path, droplet.guid, skip_state_transition: false)
    end

    def logger
      @logger ||= Steno.logger('cc.action.droplet_upload')
    end
  end
end