module Nucleus::Adapters::V1::OpenshiftV2::Lifecycle

Public Instance Methods

restart(application_id) click to toggle source

@see Stub#restart

# File lib/nucleus/adapters/v1/openshift_v2/lifecycle.rb, line 24
def restart(application_id)
  id = app_id_by_name(application_id)
  validate_start_requirements(id, 'restart')
  to_nucleus_app(send_event(id, 'restart'))
end
start(application_id) click to toggle source

@see Stub#start

# File lib/nucleus/adapters/v1/openshift_v2/lifecycle.rb, line 7
def start(application_id)
  # if app is only deployed, we must first restore the latest deployment
  id = app_id_by_name(application_id)
  validate_start_requirements(id, 'start')
  to_nucleus_app(send_event(id, 'start'))
end
stop(application_id) click to toggle source

@see Stub#stop

# File lib/nucleus/adapters/v1/openshift_v2/lifecycle.rb, line 15
def stop(application_id)
  id = app_id_by_name(application_id)
  unless deployed?(id)
    raise Errors::SemanticAdapterRequestError, 'Application must be deployed before it can be stopped'
  end
  to_nucleus_app(send_event(id, 'stop'))
end

Private Instance Methods

activate(application_id, deployment_id) click to toggle source
# File lib/nucleus/adapters/v1/openshift_v2/lifecycle.rb, line 53
def activate(application_id, deployment_id)
  send_event(application_id, 'activate', deployment_id: deployment_id)
end
deployed?(application_id) click to toggle source
# File lib/nucleus/adapters/v1/openshift_v2/lifecycle.rb, line 41
def deployed?(application_id)
  app = get("/application/#{app_id_by_name(application_id)}").body[:data]
  application_state(app) != Enums::ApplicationStates::CREATED
end
send_event(application_id, event, options = {}) click to toggle source

Send the event and trigger an action. @return [Hash] Openshift application data

# File lib/nucleus/adapters/v1/openshift_v2/lifecycle.rb, line 48
def send_event(application_id, event, options = {})
  options[:event] = event
  post("/application/#{app_id_by_name(application_id)}/events", body: options).body[:data]
end
validate_start_requirements(id, action) click to toggle source
# File lib/nucleus/adapters/v1/openshift_v2/lifecycle.rb, line 32
def validate_start_requirements(id, action)
  state = application_state(get("/application/#{id}").body[:data])
  if state == Enums::ApplicationStates::DEPLOYED
    activate(id, latest_deployment(id)[:id])
  elsif state == Enums::ApplicationStates::CREATED
    raise Errors::SemanticAdapterRequestError, "Application must be deployed before it can be #{action}ed"
  end
end