terraform-enterprise-client 0.0.6 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: