class Bosh::Director::Api::Controllers::TasksController

Public Class Methods

authorization(perm) click to toggle source
# File lib/bosh/director/api/controllers/tasks_controller.rb, line 12
def self.authorization(perm)
  return unless perm

  condition do
    type = params[:type]
    task = @task_manager.find_task(params[:id])
    if type == 'debug' || type == 'cpi' || !type
      @permission_authorizer.granted_or_raise(task, :admin, token_scopes)
    elsif type == 'event' || type == 'result' || type == 'none'
      @permission_authorizer.granted_or_raise(task, :read, token_scopes)
    else
      raise UnauthorizedToAccessDeployment, "Unknown type #{type}"
    end
  end
end
new(config) click to toggle source
# File lib/bosh/director/api/controllers/tasks_controller.rb, line 7
def initialize(config)
  super(config)
  @deployment_manager = Api::DeploymentManager.new
end

Public Instance Methods

filter_task_by_deployment_and_teams(dataset, deployment, token_scopes, limit) click to toggle source
# File lib/bosh/director/api/controllers/tasks_controller.rb, line 80
def filter_task_by_deployment_and_teams(dataset, deployment, token_scopes, limit)
    if deployment
      dataset = dataset.where(deployment_name: deployment)
    end
    if token_scopes
      teams = Models::Team.transform_admin_team_scope_to_teams(token_scopes)
      dataset = dataset.where(teams: teams)
    end
    if limit
      dataset = dataset.limit(limit)
    end
    dataset.order_by(Sequel.desc(:timestamp)).all
end

Private Instance Methods

task_timeout?(task) click to toggle source
# File lib/bosh/director/api/controllers/tasks_controller.rb, line 139
def task_timeout?(task)
  # Some of the old task entries might not have the checkpoint_time
  unless task.checkpoint_time
    task.checkpoint_time = Time.now
    task.save
  end

  # If no checkpoint update in 3 cycles --> timeout
  (task.state == 'processing' || task.state == 'cancelling') &&
    (Time.now - task.checkpoint_time > Config.task_checkpoint_interval * 3)
end