turbot 0.0.2
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.
- checksums.yaml +15 -0
- data/README.md +36 -0
- data/bin/turbot +17 -0
- data/data/cacert.pem +3988 -0
- data/lib/turbot/auth.rb +315 -0
- data/lib/turbot/cli.rb +38 -0
- data/lib/turbot/client/cisaurus.rb +25 -0
- data/lib/turbot/client/pgbackups.rb +113 -0
- data/lib/turbot/client/rendezvous.rb +111 -0
- data/lib/turbot/client/ssl_endpoint.rb +25 -0
- data/lib/turbot/client/turbot_postgresql.rb +148 -0
- data/lib/turbot/client.rb +757 -0
- data/lib/turbot/command/auth.rb +85 -0
- data/lib/turbot/command/base.rb +192 -0
- data/lib/turbot/command/bots.rb +326 -0
- data/lib/turbot/command/config.rb +123 -0
- data/lib/turbot/command/help.rb +179 -0
- data/lib/turbot/command/keys.rb +115 -0
- data/lib/turbot/command/logs.rb +34 -0
- data/lib/turbot/command/ssl.rb +43 -0
- data/lib/turbot/command/status.rb +51 -0
- data/lib/turbot/command/update.rb +47 -0
- data/lib/turbot/command/version.rb +23 -0
- data/lib/turbot/command.rb +304 -0
- data/lib/turbot/deprecated/help.rb +38 -0
- data/lib/turbot/deprecated.rb +5 -0
- data/lib/turbot/distribution.rb +9 -0
- data/lib/turbot/errors.rb +28 -0
- data/lib/turbot/excon.rb +11 -0
- data/lib/turbot/helpers/log_displayer.rb +70 -0
- data/lib/turbot/helpers/pg_dump_restore.rb +115 -0
- data/lib/turbot/helpers/turbot_postgresql.rb +213 -0
- data/lib/turbot/helpers.rb +521 -0
- data/lib/turbot/plugin.rb +165 -0
- data/lib/turbot/updater.rb +171 -0
- data/lib/turbot/version.rb +3 -0
- data/lib/turbot.rb +19 -0
- data/lib/vendor/turbot/okjson.rb +598 -0
- data/spec/helper/legacy_help.rb +16 -0
- data/spec/helper/pg_dump_restore_spec.rb +67 -0
- data/spec/schemas/dummy_schema.json +12 -0
- data/spec/spec.opts +1 -0
- data/spec/spec_helper.rb +220 -0
- data/spec/support/display_message_matcher.rb +49 -0
- data/spec/support/dummy_api.rb +120 -0
- data/spec/support/openssl_mock_helper.rb +8 -0
- data/spec/support/organizations_mock_helper.rb +11 -0
- data/spec/turbot/auth_spec.rb +214 -0
- data/spec/turbot/client/pgbackups_spec.rb +43 -0
- data/spec/turbot/client/rendezvous_spec.rb +62 -0
- data/spec/turbot/client/ssl_endpoint_spec.rb +48 -0
- data/spec/turbot/client/turbot_postgresql_spec.rb +71 -0
- data/spec/turbot/client_spec.rb +548 -0
- data/spec/turbot/command/auth_spec.rb +38 -0
- data/spec/turbot/command/base_spec.rb +66 -0
- data/spec/turbot/command/bots_spec.rb +54 -0
- data/spec/turbot/command/config_spec.rb +143 -0
- data/spec/turbot/command/help_spec.rb +90 -0
- data/spec/turbot/command/keys_spec.rb +117 -0
- data/spec/turbot/command/logs_spec.rb +60 -0
- data/spec/turbot/command/status_spec.rb +48 -0
- data/spec/turbot/command/version_spec.rb +16 -0
- data/spec/turbot/command_spec.rb +131 -0
- data/spec/turbot/helpers/turbot_postgresql_spec.rb +181 -0
- data/spec/turbot/helpers_spec.rb +48 -0
- data/spec/turbot/plugin_spec.rb +172 -0
- data/spec/turbot/updater_spec.rb +44 -0
- data/templates/manifest.json +7 -0
- data/templates/scraper.py +5 -0
- data/templates/scraper.rb +6 -0
- metadata +199 -0
@@ -0,0 +1,148 @@
|
|
1
|
+
require "turbot/client"
|
2
|
+
|
3
|
+
class Turbot::Client::TurbotPostgresql
|
4
|
+
Version = 11
|
5
|
+
|
6
|
+
include Turbot::Helpers
|
7
|
+
|
8
|
+
@headers = { :x_turbot_gem_version => Turbot::Client.version }
|
9
|
+
|
10
|
+
def self.add_headers(headers)
|
11
|
+
@headers.merge! headers
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.headers
|
15
|
+
@headers
|
16
|
+
end
|
17
|
+
|
18
|
+
attr_reader :attachment
|
19
|
+
def initialize(attachment)
|
20
|
+
@attachment = attachment
|
21
|
+
require 'rest_client'
|
22
|
+
end
|
23
|
+
|
24
|
+
def turbot_postgresql_host
|
25
|
+
if attachment.starter_plan?
|
26
|
+
determine_host(ENV["TURBOT_POSTGRESQL_HOST"], "postgres-starter-api.turbot.com")
|
27
|
+
else
|
28
|
+
if ENV['SHOGUN']
|
29
|
+
"shogun-#{ENV['SHOGUN']}.turbotapp.com"
|
30
|
+
else
|
31
|
+
determine_host(ENV["TURBOT_POSTGRESQL_HOST"], "postgres-api.turbot.com")
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def resource_name
|
37
|
+
attachment.resource_name
|
38
|
+
end
|
39
|
+
|
40
|
+
def turbot_postgresql_resource
|
41
|
+
RestClient::Resource.new(
|
42
|
+
"https://#{turbot_postgresql_host}/client/v11/databases",
|
43
|
+
:user => Turbot::Auth.user,
|
44
|
+
:password => Turbot::Auth.password,
|
45
|
+
:headers => self.class.headers
|
46
|
+
)
|
47
|
+
end
|
48
|
+
|
49
|
+
def ingress
|
50
|
+
http_put "#{resource_name}/ingress"
|
51
|
+
end
|
52
|
+
|
53
|
+
def reset
|
54
|
+
http_put "#{resource_name}/reset"
|
55
|
+
end
|
56
|
+
|
57
|
+
def rotate_credentials
|
58
|
+
http_post "#{resource_name}/credentials_rotation"
|
59
|
+
end
|
60
|
+
|
61
|
+
def get_database(extended=false)
|
62
|
+
query = extended ? '?extended=true' : ''
|
63
|
+
http_get resource_name + query
|
64
|
+
end
|
65
|
+
|
66
|
+
def get_wait_status
|
67
|
+
http_get "#{resource_name}/wait_status"
|
68
|
+
end
|
69
|
+
|
70
|
+
def unfollow
|
71
|
+
http_put "#{resource_name}/unfollow"
|
72
|
+
end
|
73
|
+
|
74
|
+
protected
|
75
|
+
|
76
|
+
def sym_keys(c)
|
77
|
+
if c.is_a?(Array)
|
78
|
+
c.map { |e| sym_keys(e) }
|
79
|
+
else
|
80
|
+
c.inject({}) do |h, (k, v)|
|
81
|
+
h[k.to_sym] = v; h
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
def checking_client_version
|
87
|
+
begin
|
88
|
+
yield
|
89
|
+
rescue RestClient::BadRequest => e
|
90
|
+
if message = json_decode(e.response.to_s)["upgrade_message"]
|
91
|
+
abort(message)
|
92
|
+
else
|
93
|
+
raise e
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
def display_turbot_warning(response)
|
99
|
+
warning = response.headers[:x_turbot_warning]
|
100
|
+
display warning if warning
|
101
|
+
response
|
102
|
+
end
|
103
|
+
|
104
|
+
def http_get(path)
|
105
|
+
checking_client_version do
|
106
|
+
retry_on_exception(RestClient::Exception) do
|
107
|
+
response = turbot_postgresql_resource[path].get
|
108
|
+
display_turbot_warning response
|
109
|
+
sym_keys(json_decode(response.to_s))
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
def http_post(path, payload = {})
|
115
|
+
checking_client_version do
|
116
|
+
response = turbot_postgresql_resource[path].post(json_encode(payload))
|
117
|
+
display_turbot_warning response
|
118
|
+
sym_keys(json_decode(response.to_s))
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
def http_put(path, payload = {})
|
123
|
+
checking_client_version do
|
124
|
+
response = turbot_postgresql_resource[path].put(json_encode(payload))
|
125
|
+
display_turbot_warning response
|
126
|
+
sym_keys(json_decode(response.to_s))
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
private
|
131
|
+
|
132
|
+
def determine_host(value, default)
|
133
|
+
if value.nil?
|
134
|
+
default
|
135
|
+
else
|
136
|
+
"#{value}.turbotapp.com"
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
module TurbotPostgresql
|
142
|
+
class Client < Turbot::Client::TurbotPostgresql
|
143
|
+
def initialize(*args)
|
144
|
+
Turbot::Helpers.deprecate "TurbotPostgresql::Client has been deprecated. Please use Turbot::Client::TurbotPostgresql instead."
|
145
|
+
super
|
146
|
+
end
|
147
|
+
end
|
148
|
+
end
|