terraform-enterprise-client 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +11 -53
  3. data/lib/terraform-enterprise-client.rb +1 -39
  4. data/lib/terraform-enterprise.rb +1 -0
  5. data/lib/terraform_enterprise.rb +2 -0
  6. data/lib/terraform_enterprise/api/client.rb +62 -0
  7. data/lib/terraform_enterprise/api/request.rb +97 -0
  8. data/lib/terraform_enterprise/api/resource.rb +48 -0
  9. data/lib/terraform_enterprise/api/resource_request.rb +12 -0
  10. data/lib/terraform_enterprise/api/resource_requests/configuration_versions.rb +28 -0
  11. data/lib/{terraform-enterprise/resource_requests/oauth-tokens.rb → terraform_enterprise/api/resource_requests/oauth_tokens.rb} +5 -4
  12. data/lib/{terraform-enterprise → terraform_enterprise/api}/resource_requests/organizations.rb +8 -7
  13. data/lib/terraform_enterprise/api/resource_requests/policies.rb +46 -0
  14. data/lib/terraform_enterprise/api/resource_requests/policy_checks.rb +18 -0
  15. data/lib/terraform_enterprise/api/resource_requests/runs.rb +53 -0
  16. data/lib/{terraform-enterprise → terraform_enterprise/api}/resource_requests/teams.rb +8 -8
  17. data/lib/terraform_enterprise/api/resource_requests/variables.rb +48 -0
  18. data/lib/terraform_enterprise/api/resource_requests/workspaces.rb +52 -0
  19. data/lib/terraform_enterprise/api/response.rb +39 -0
  20. data/lib/terraform_enterprise/api/version.rb +5 -0
  21. data/lib/terraform_enterprise_client.rb +1 -0
  22. metadata +24 -88
  23. data/bin/tfe +0 -4
  24. data/lib/terraform-enterprise-command-line.rb +0 -29
  25. data/lib/terraform-enterprise/client/request.rb +0 -82
  26. data/lib/terraform-enterprise/client/resource.rb +0 -19
  27. data/lib/terraform-enterprise/client/resource_request.rb +0 -10
  28. data/lib/terraform-enterprise/client/response.rb +0 -37
  29. data/lib/terraform-enterprise/commands/command.rb +0 -46
  30. data/lib/terraform-enterprise/commands/formatter.rb +0 -93
  31. data/lib/terraform-enterprise/commands/oauth_tokens_command.rb +0 -16
  32. data/lib/terraform-enterprise/commands/organizations_command.rb +0 -30
  33. data/lib/terraform-enterprise/commands/strings.rb +0 -79
  34. data/lib/terraform-enterprise/commands/teams_command.rb +0 -33
  35. data/lib/terraform-enterprise/commands/variables_command.rb +0 -61
  36. data/lib/terraform-enterprise/commands/workspaces_command.rb +0 -87
  37. data/lib/terraform-enterprise/resource_requests/variables.rb +0 -48
  38. data/lib/terraform-enterprise/resource_requests/workspaces.rb +0 -45
  39. data/lib/terraform-enterprise/version.rb +0 -3
@@ -0,0 +1,46 @@
1
+ require 'terraform_enterprise/api/resource_request'
2
+
3
+ module TerraformEnterprise
4
+ module API
5
+ # Teams resource request
6
+ class Policies < TerraformEnterprise::API::ResourceRequest
7
+ def list(params = {})
8
+ @request.get(:organizations, params[:organization], :policies)
9
+ end
10
+
11
+ def get(params = {})
12
+ @request.get(:policies, params[:id])
13
+ end
14
+
15
+ def create(params = {})
16
+ org = params.delete(:organization)
17
+ data = {
18
+ attributes: params,
19
+ type: 'policies'
20
+ }
21
+
22
+ @request.post(:organizations, org, :policies, data: data)
23
+ end
24
+
25
+ def update(params = {})
26
+ id = params.delete(:id)
27
+ data = {
28
+ attributes: params,
29
+ type: 'policies'
30
+ }
31
+
32
+ @request.patch(:policies, id, data: data)
33
+ end
34
+
35
+ def upload(params = {})
36
+ headers = { 'Content-Type' => 'application/octet-stream' }
37
+ path = [:policies, params[:id], :upload]
38
+ @request.request(:put, path, params[:content], headers)
39
+ end
40
+
41
+ def delete(params = {})
42
+ @request.delete(:policies, params[:id])
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,18 @@
1
+ require 'terraform_enterprise/api/resource_request'
2
+
3
+ module TerraformEnterprise
4
+ module API
5
+ # Policy Checks resource request
6
+ class PolicyChecks < TerraformEnterprise::API::ResourceRequest
7
+ def list(params = {})
8
+ @request.get(:runs, params[:run_id], 'policy-checks')
9
+ end
10
+
11
+ def action(params = {})
12
+ id = params.delete(:id)
13
+ action = params.delete(:action).to_sym
14
+ @request.post('policy-checks', id, :actions, action, params)
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,53 @@
1
+ require 'terraform_enterprise/api/resource_request'
2
+
3
+ module TerraformEnterprise
4
+ module API
5
+ # Variables resource request
6
+ class Runs < TerraformEnterprise::API::ResourceRequest
7
+
8
+
9
+ def list(params = {})
10
+ @request.get(:workspaces, params[:id], :runs)
11
+ end
12
+
13
+ def create(params = {})
14
+ data = {
15
+ attributes: {
16
+ 'is-destroy' => params[:destroy] || false
17
+ },
18
+ relationships: {
19
+ workspace: {
20
+ data: {
21
+ type: 'workspaces',
22
+ id: params[:workspace_id]
23
+ }
24
+ }
25
+ },
26
+ type: 'runs'
27
+ }
28
+
29
+ if params[:configuration_version_id]
30
+ data[:relationships]['configuration-version'] = {
31
+ data: {
32
+ type: 'configuration-version',
33
+ id: params[:configuration_version_id]
34
+ }
35
+ }
36
+ end
37
+
38
+ @request.post(:runs, data: data)
39
+ end
40
+
41
+ def get(params = {})
42
+ id = params.delete(:id)
43
+ @request.get(:runs, id, params)
44
+ end
45
+
46
+ def action(params = {})
47
+ id = params.delete(:id)
48
+ action = params.delete(:action).to_sym
49
+ @request.post(:runs, id, :actions, action, params)
50
+ end
51
+ end
52
+ end
53
+ end
@@ -1,18 +1,18 @@
1
- require "terraform-enterprise/client/resource_request"
1
+ require 'terraform_enterprise/api/resource_request'
2
2
 
3
- module TerraformEnterprise
3
+ module TerraformEnterprise
4
4
  module API
5
+ # Teams resource request
5
6
  class Teams < TerraformEnterprise::API::ResourceRequest
6
-
7
- def list(params={})
7
+ def list(params = {})
8
8
  @request.get(:organizations, params[:organization], :teams)
9
9
  end
10
10
 
11
- def get(params={})
11
+ def get(params = {})
12
12
  @request.get(:teams, params[:id])
13
13
  end
14
14
 
15
- def create(params={})
15
+ def create(params = {})
16
16
  org = params.delete(:organization)
17
17
  data = {
18
18
  attributes: params,
@@ -22,9 +22,9 @@ module TerraformEnterprise
22
22
  @request.post(:organizations, org, :teams, data: data)
23
23
  end
24
24
 
25
- def delete(params={})
25
+ def delete(params = {})
26
26
  @request.delete(:teams, params[:id])
27
27
  end
28
28
  end
29
29
  end
30
- end
30
+ end
@@ -0,0 +1,48 @@
1
+ require 'terraform_enterprise/api/resource_request'
2
+
3
+ module TerraformEnterprise
4
+ module API
5
+ # Variables resource request
6
+ class Variables < TerraformEnterprise::API::ResourceRequest
7
+ def list(params = {})
8
+ filter = {}
9
+ filter[:workspace] = { name: params[:workspace] } if params[:workspace]
10
+ filter[:organization] = { name: params[:organization] } if params[:organization]
11
+ @request.get(:vars, filter: filter)
12
+ end
13
+
14
+ def get(params = {})
15
+ @request.get(:vars, params[:id])
16
+ end
17
+
18
+ def create(params = {})
19
+ org = params.delete(:organization)
20
+ workspace = params.delete(:workspace)
21
+ data = {
22
+ attributes: params,
23
+ type: 'vars'
24
+ }
25
+ filter = {
26
+ organization: { name: org },
27
+ workspace: { name: workspace }
28
+ }
29
+
30
+ @request.post(:vars, data: data, filter: filter)
31
+ end
32
+
33
+ def update(params = {})
34
+ id = params.delete(:id)
35
+ data = {
36
+ attributes: params,
37
+ type: 'vars'
38
+ }
39
+
40
+ @request.patch(:vars, id, data: data)
41
+ end
42
+
43
+ def delete(params = {})
44
+ @request.delete(:vars, params[:id])
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,52 @@
1
+ require 'terraform_enterprise/api/resource_request'
2
+
3
+ module TerraformEnterprise
4
+ module API
5
+ # Workspace resource request
6
+ class Workspaces < TerraformEnterprise::API::ResourceRequest
7
+ def list(params = {})
8
+ @request.get(:organizations, params[:organization], :workspaces)
9
+ end
10
+
11
+ def get(params = {})
12
+ organization = params[:organization]
13
+ workspace = params[:workspace]
14
+ @request.get(:organizations, organization, :workspaces, workspace)
15
+ end
16
+
17
+ def create(params = {})
18
+ org = params.delete(:organization)
19
+ data = {
20
+ attributes: params,
21
+ type: 'workspaces'
22
+ }
23
+
24
+ @request.post(:organizations, org, :workspaces, data: data)
25
+ end
26
+
27
+ def update(params = {})
28
+ org = params.delete(:organization)
29
+ id = params.delete(:workspace)
30
+
31
+ data = {
32
+ attributes: params,
33
+ type: 'workspaces'
34
+ }
35
+
36
+ @request.patch(:organizations, org, :workspaces, id, data: data)
37
+ end
38
+
39
+ def delete(params = {})
40
+ organization = params[:organization]
41
+ workspace = params[:workspace]
42
+ @request.delete(:organizations, organization, :workspaces, workspace)
43
+ end
44
+
45
+ def action(params = {})
46
+ id = params[:id]
47
+ action = params[:action].to_sym
48
+ @request.post(:workspaces, id, :actions, action)
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,39 @@
1
+ require_relative 'resource'
2
+
3
+ module TerraformEnterprise
4
+ module API
5
+ # Wrapps the JSON-API HTTP response for easy access to data and resources
6
+ class Response
7
+ include TerraformEnterprise::API
8
+
9
+ attr_reader :code, :body, :data, :resource, :resources, :errors
10
+ def initialize(rest_client_response)
11
+ @code = rest_client_response.code
12
+ @body = parse(rest_client_response.body)
13
+
14
+ return unless @body.is_a?(Hash)
15
+
16
+ @data = @body['data'] || @body
17
+ @errors = @body['errors'] || []
18
+ @resource = Resource.new(@body) if @data.is_a?(Hash)
19
+ @resources = @data.map { |row| Resource.new('data' => row) } if @data.is_a?(Array)
20
+ end
21
+
22
+ def errors?
23
+ @body.is_a?(Hash) && @body['errors'] && @body['errors'].is_a?(Array)
24
+ end
25
+
26
+ def success?
27
+ @code.between?(200, 299)
28
+ end
29
+
30
+ private
31
+
32
+ def parse(str)
33
+ JSON.parse(str)
34
+ rescue JSON::ParserError
35
+ str
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,5 @@
1
+ module TerraformEnterprise
2
+ module API
3
+ VERSION = '0.0.7'.freeze
4
+ end
5
+ end
@@ -0,0 +1 @@
1
+ require 'terraform_enterprise'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: terraform-enterprise-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maciej Skierkowski
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-03-26 00:00:00.000000000 Z
11
+ date: 2018-04-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
@@ -30,70 +30,9 @@ dependencies:
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
32
  version: 2.0.2
33
- - !ruby/object:Gem::Dependency
34
- name: colorize
35
- requirement: !ruby/object:Gem::Requirement
36
- requirements:
37
- - - "~>"
38
- - !ruby/object:Gem::Version
39
- version: '0.8'
40
- - - ">="
41
- - !ruby/object:Gem::Version
42
- version: 0.8.1
43
- type: :runtime
44
- prerelease: false
45
- version_requirements: !ruby/object:Gem::Requirement
46
- requirements:
47
- - - "~>"
48
- - !ruby/object:Gem::Version
49
- version: '0.8'
50
- - - ">="
51
- - !ruby/object:Gem::Version
52
- version: 0.8.1
53
- - !ruby/object:Gem::Dependency
54
- name: thor
55
- requirement: !ruby/object:Gem::Requirement
56
- requirements:
57
- - - "~>"
58
- - !ruby/object:Gem::Version
59
- version: '0.20'
60
- - - ">="
61
- - !ruby/object:Gem::Version
62
- version: 0.20.0
63
- type: :runtime
64
- prerelease: false
65
- version_requirements: !ruby/object:Gem::Requirement
66
- requirements:
67
- - - "~>"
68
- - !ruby/object:Gem::Version
69
- version: '0.20'
70
- - - ">="
71
- - !ruby/object:Gem::Version
72
- version: 0.20.0
73
- - !ruby/object:Gem::Dependency
74
- name: terminal-table
75
- requirement: !ruby/object:Gem::Requirement
76
- requirements:
77
- - - "~>"
78
- - !ruby/object:Gem::Version
79
- version: '1.8'
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: 1.8.0
83
- type: :runtime
84
- prerelease: false
85
- version_requirements: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: '1.8'
90
- - - ">="
91
- - !ruby/object:Gem::Version
92
- version: 1.8.0
93
33
  description: " Ruby client that supports all of the Terraform Enterprise API methods. "
94
34
  email: maciej@skierkowski.com
95
- executables:
96
- - tfe
35
+ executables: []
97
36
  extensions: []
98
37
  extra_rdoc_files:
99
38
  - LICENSE
@@ -101,27 +40,25 @@ extra_rdoc_files:
101
40
  files:
102
41
  - LICENSE
103
42
  - README.md
104
- - bin/tfe
105
43
  - lib/terraform-enterprise-client.rb
106
- - lib/terraform-enterprise-command-line.rb
107
- - lib/terraform-enterprise/client/request.rb
108
- - lib/terraform-enterprise/client/resource.rb
109
- - lib/terraform-enterprise/client/resource_request.rb
110
- - lib/terraform-enterprise/client/response.rb
111
- - lib/terraform-enterprise/commands/command.rb
112
- - lib/terraform-enterprise/commands/formatter.rb
113
- - lib/terraform-enterprise/commands/oauth_tokens_command.rb
114
- - lib/terraform-enterprise/commands/organizations_command.rb
115
- - lib/terraform-enterprise/commands/strings.rb
116
- - lib/terraform-enterprise/commands/teams_command.rb
117
- - lib/terraform-enterprise/commands/variables_command.rb
118
- - lib/terraform-enterprise/commands/workspaces_command.rb
119
- - lib/terraform-enterprise/resource_requests/oauth-tokens.rb
120
- - lib/terraform-enterprise/resource_requests/organizations.rb
121
- - lib/terraform-enterprise/resource_requests/teams.rb
122
- - lib/terraform-enterprise/resource_requests/variables.rb
123
- - lib/terraform-enterprise/resource_requests/workspaces.rb
124
- - lib/terraform-enterprise/version.rb
44
+ - lib/terraform-enterprise.rb
45
+ - lib/terraform_enterprise.rb
46
+ - lib/terraform_enterprise/api/client.rb
47
+ - lib/terraform_enterprise/api/request.rb
48
+ - lib/terraform_enterprise/api/resource.rb
49
+ - lib/terraform_enterprise/api/resource_request.rb
50
+ - lib/terraform_enterprise/api/resource_requests/configuration_versions.rb
51
+ - lib/terraform_enterprise/api/resource_requests/oauth_tokens.rb
52
+ - lib/terraform_enterprise/api/resource_requests/organizations.rb
53
+ - lib/terraform_enterprise/api/resource_requests/policies.rb
54
+ - lib/terraform_enterprise/api/resource_requests/policy_checks.rb
55
+ - lib/terraform_enterprise/api/resource_requests/runs.rb
56
+ - lib/terraform_enterprise/api/resource_requests/teams.rb
57
+ - lib/terraform_enterprise/api/resource_requests/variables.rb
58
+ - lib/terraform_enterprise/api/resource_requests/workspaces.rb
59
+ - lib/terraform_enterprise/api/response.rb
60
+ - lib/terraform_enterprise/api/version.rb
61
+ - lib/terraform_enterprise_client.rb
125
62
  homepage: http://github.com/skierkowski/terraform-enterprise-client
126
63
  licenses:
127
64
  - MPL-2.0
@@ -134,7 +71,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
134
71
  requirements:
135
72
  - - ">="
136
73
  - !ruby/object:Gem::Version
137
- version: 2.0.0
74
+ version: 2.3.0
138
75
  required_rubygems_version: !ruby/object:Gem::Requirement
139
76
  requirements:
140
77
  - - ">="
@@ -142,9 +79,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
142
79
  version: '0'
143
80
  requirements: []
144
81
  rubyforge_project:
145
- rubygems_version: 2.5.1
82
+ rubygems_version: 2.7.6
146
83
  signing_key:
147
84
  specification_version: 4
148
- summary: Ruby client for the official Terraform Enterprise API
85
+ summary: Ruby client for bunthe official Terraform Enterprise API
149
86
  test_files: []
150
- has_rdoc: