1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
|
require 'fog/openstack/workflow'
module Fog
module OpenStack
class Workflow
class V2 < Fog::Service
SUPPORTED_VERSIONS = /v2/
requires :openstack_auth_url
recognizes :openstack_username, :openstack_api_key,
:openstack_project_name, :openstack_domain_id
## REQUESTS
#
request_path 'fog/openstack/workflow/v2/requests'
# Workflow requests
request :create_execution
request :get_execution
request :list_executions
request :update_execution
request :delete_execution
request :create_action_execution
request :get_action_execution
request :list_action_executions
request :update_action_execution
request :delete_action_execution
request :create_workbook
request :get_workbook
request :list_workbooks
request :update_workbook
request :validate_workbook
request :delete_workbook
request :create_workflow
request :get_workflow
request :list_workflows
request :update_workflow
request :validate_workflow
request :delete_workflow
request :create_action
request :get_action
request :list_actions
request :update_action
request :validate_action
request :delete_action
request :get_task
request :list_tasks
request :rerun_task
request :create_cron_trigger
request :get_cron_trigger
request :list_cron_triggers
request :delete_cron_trigger
request :create_environment
request :get_environment
request :list_environments
request :update_environment
request :delete_environment
request :list_services
class Mock
def self.data
@data ||= Hash.new do |hash, key|
hash[key] = {
:workflows => {}
}
end
end
def self.reset
@data = nil
end
include Fog::OpenStack::Core
def initialize(options = {})
@auth_token = Fog::Mock.random_base64(64)
@auth_token_expiration = (Time.now.utc + 86_400).iso8601
end
def data
self.class.data[@openstack_username]
end
def reset_data
self.class.data.delete(@openstack_username)
end
end
class Real
include Fog::OpenStack::Core
def default_path_prefix
'v2'
end
def default_service_type
%w[workflowv2]
end
def request(params)
response = @connection.request(
params.merge(
:headers => {
'Content-Type' => 'application/json',
'X-Auth-Token' => @auth_token
}.merge!(params[:headers] || {}),
:path => "#{@path}/#{params[:path]}"
)
)
rescue Excon::Errors::Unauthorized => error
if error.response.body != "Bad username or password" # token expiration
@openstack_must_reauthenticate = true
authenticate
retry
else # bad credentials
raise error
end
rescue Excon::Errors::HTTPStatusError => error
raise case error
when Excon::Errors::NotFound
Fog::OpenStack::Workflow::NotFound.slurp(error)
else
error
end
else
unless response.body.empty?
response.body = Fog::JSON.decode(response.body)
end
response
end
end
end
end
end
end
|