File: v2.rb

package info (click to toggle)
ruby-fog-openstack 1.1.5-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 11,784 kB
  • sloc: ruby: 47,937; makefile: 5; sh: 4
file content (143 lines) | stat: -rw-r--r-- 3,853 bytes parent folder | download | duplicates (3)
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