seira 0.5.3 → 0.5.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 00d08df8b0745e2685212efae00e131197ce665fbf90afb3cd7a72b150450e20
4
- data.tar.gz: 4c81a2a27b8edbe069375535b4848ad17d38cf2b803679a939ff1f970d3a6d0b
3
+ metadata.gz: 16a43b30639713b47c035cd97dbfc2392dedd8ffd85dd3f8d188fbdef0d9efd9
4
+ data.tar.gz: c11ee4d7151e0ae9dc068c2b91bee0bc4c00d184d688e7ddcab6a7872420f0ee
5
5
  SHA512:
6
- metadata.gz: a0dc529337d4d8dc6f5826953d111a7f1d18d6c5558e262c01b7a50b4b064b1e4054edfee62c5127564b3aca1490bc4ccbcb3280f8bc065215ec39e4cd01c5f5
7
- data.tar.gz: ec8c5a215f0b0382bc55c1207055377a9bec7cffba0a2882783eb0b3619e704d7859d094ddafd0065ef88f16ebc854983a0702e3635783c635b60e476019c405
6
+ metadata.gz: 26069ed21b7f53110b877a372867497e308e58a7e7239108caf7473d4d42d07fe548bddc80032b8ffec3f35268b35f4a372f839a2d979a7107869b0fc87b4ce9
7
+ data.tar.gz: 6e58dc0e409d35ed00de7bd3950afd98300f303f0e78644dd83134a9cfbf8c8ec6e3b6c9db0cf06e80ae0666e2e75da6b96ca41893d81bb8ea536bb35806e829
data/lib/helpers.rb CHANGED
@@ -45,6 +45,14 @@ module Seira
45
45
  rescue
46
46
  'unknown'
47
47
  end
48
+
49
+ def sql_ips(name, context:)
50
+ describe_command = "sql instances describe #{name}"
51
+ json = JSON.parse(Seira::Commands.gcloud(describe_command, context: context, format: :json))
52
+ private_ip = json['ipAddresses'].find { |address| address['type'] == 'PRIVATE' }['ipAddress']
53
+ public_ip = json['ipAddresses'].find { |address| address['type'] == 'PRIMARY' }['ipAddress']
54
+ { private: private_ip, public: public_ip }
55
+ end
48
56
  end
49
57
  end
50
58
  end
data/lib/seira.rb CHANGED
@@ -56,6 +56,8 @@ module Seira
56
56
  # arg is not in the ARGV array and should be skipped over
57
57
  if ARGV[0] == 'help'
58
58
  @category = reversed_args.pop
59
+ elsif ARGV[0] == 'version'
60
+ @category = reversed_args.pop
59
61
  elsif ARGV[1] == 'cluster'
60
62
  cluster = reversed_args.pop
61
63
  @category = reversed_args.pop
@@ -100,6 +102,9 @@ module Seira
100
102
  if category == 'help'
101
103
  run_base_help
102
104
  exit(0)
105
+ elsif category == 'version'
106
+ puts "Seira version: #{Seira::VERSION}"
107
+ exit(0)
103
108
  elsif category == 'setup'
104
109
  Seira::Setup.new(target: cluster, args: args, settings: settings).run
105
110
  exit(0)
@@ -136,8 +141,8 @@ module Seira
136
141
  cluster: cluster,
137
142
  project: project,
138
143
  settings: settings,
139
- region: cluster['region'],
140
- zone: cluster['zone'],
144
+ region: settings.region_for_cluster(cluster),
145
+ zone: settings.zone_for_cluster(cluster),
141
146
  app: app,
142
147
  action: action,
143
148
  args: args
@@ -151,7 +156,7 @@ module Seira
151
156
  exit(1)
152
157
  end
153
158
 
154
- unless system("kubectl version > /dev/null 2>&1")
159
+ unless system("kubectl version -c > /dev/null 2>&1")
155
160
  puts "Kubectl library not installed properly. Please install `kubectl` before using seira.".red
156
161
  exit(1)
157
162
  end
data/lib/seira/db.rb CHANGED
@@ -245,7 +245,7 @@ module Seira
245
245
  end
246
246
 
247
247
  password = SecureRandom.urlsafe_base64(32)
248
- if gcloud("sql users create #{user_name} '' --instance=#{instance_name} --password=#{password}", context: context, format: :boolean)
248
+ if gcloud("sql users create #{user_name} --instance=#{instance_name} --password=#{password}", context: context, format: :boolean)
249
249
  puts "Created user '#{user_name}' with password #{password}"
250
250
  else
251
251
  puts "Failed to create user '#{user_name}'"
@@ -264,6 +264,8 @@ module Seira
264
264
  GRANT SELECT ON ALL TABLES IN SCHEMA public TO #{user_name};
265
265
  ALTER DEFAULT PRIVILEGES IN SCHEMA "public" GRANT SELECT ON TABLES TO #{user_name};
266
266
  SQL
267
+
268
+ puts "Connecting"
267
269
  execute_db_command(admin_commands, as_admin: true)
268
270
  execute_db_command(database_commands)
269
271
  end
@@ -412,6 +414,7 @@ module Seira
412
414
  def execute_db_command(sql_command, as_admin: false, interactive: false, print: true)
413
415
  # TODO(josh): move pgbouncer naming logic here and in Create to a common location
414
416
  instance_name = primary_instance
417
+ private_ip = Helpers.sql_ips(instance_name, context: context)[:private]
415
418
  tier = instance_name.gsub("#{app}-", '')
416
419
  matching_pods = Helpers.fetch_pods(context: context, filters: { tier: tier })
417
420
  if matching_pods.empty?
@@ -422,9 +425,9 @@ module Seira
422
425
  psql_command =
423
426
  if as_admin
424
427
  root_password = Helpers.get_secret(context: context, key: "#{instance_name.tr('-', '_').upcase}_ROOT_PASSWORD")
425
- "psql postgres://postgres:#{root_password}@127.0.0.1:5432"
428
+ "psql postgres://postgres:#{root_password}@#{private_ip}:5432"
426
429
  else
427
- 'psql'
430
+ "psql"
428
431
  end
429
432
  system_command = "kubectl exec #{pod_name} --namespace #{app}"
430
433
  system_command += ' -ti' if interactive
@@ -188,13 +188,7 @@ module Seira
188
188
  end
189
189
 
190
190
  def ips
191
- @_ips ||= begin
192
- describe_command = "sql instances describe #{name}"
193
- json = JSON.parse(gcloud(describe_command, context: context, format: :json))
194
- private_ip = json['ipAddresses'].find { |address| address['type'] == 'PRIVATE' }['ipAddress']
195
- public_ip = json['ipAddresses'].find { |address| address['type'] == 'PRIMARY' }['ipAddress']
196
- { private: private_ip, public: public_ip }
197
- end
191
+ @ips ||= Helpers.sql_ips(name, context: context)
198
192
  end
199
193
 
200
194
  def write_pgbouncer_yaml
@@ -58,7 +58,7 @@ module Seira
58
58
  # TODO: Info about what is running on it?
59
59
  # TODO: What information do we get in the json format we could include here?
60
60
  def run_list
61
- gcloud("container node-pools list --cluster #{context[:cluster]}", context: context, format: :boolean)
61
+ gcloud("container node-pools list --cluster #{context[:cluster]} --region=#{context[:region]}", context: context, format: :boolean)
62
62
  end
63
63
 
64
64
  def run_list_nodes
@@ -157,7 +157,7 @@ module Seira
157
157
 
158
158
  exit(1) unless HighLine.agree "Node pool has successfully been cordoned and drained, and should be safe to delete. Continue deleting node pool #{node_pool_name}?"
159
159
 
160
- if gcloud("container node-pools delete #{node_pool_name} --cluster #{context[:cluster]}", context: context, format: :boolean)
160
+ if gcloud("container node-pools delete #{node_pool_name} --cluster #{context[:cluster]} --region=#{context[:region]}", context: context, format: :boolean)
161
161
  puts 'Node pool deleted successfully'
162
162
  else
163
163
  puts 'Failed to delete old pool'
@@ -167,7 +167,7 @@ module Seira
167
167
 
168
168
  # TODO: Represent by a ruby object?
169
169
  def node_pools
170
- JSON.parse(gcloud("container node-pools list --cluster #{context[:cluster]}", context: context, format: :json))
170
+ JSON.parse(gcloud("container node-pools list --cluster #{context[:cluster]} --region=#{context[:region]}", context: context, format: :json))
171
171
  end
172
172
 
173
173
  def nodes_for_pool(pool_name)
@@ -56,6 +56,14 @@ module Seira
56
56
  settings['seira']['clusters'][cluster]['project']
57
57
  end
58
58
 
59
+ def region_for_cluster(cluster)
60
+ settings['seira']['clusters'][cluster]['region']
61
+ end
62
+
63
+ def zone_for_cluster(cluster)
64
+ settings['seira']['clusters'][cluster]['zone']
65
+ end
66
+
59
67
  def expected_environment_variable_during_deploys
60
68
  settings['seira']['expected_environment_variable_during_deploys']
61
69
  end
data/lib/seira/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Seira
2
- VERSION = "0.5.3".freeze
2
+ VERSION = "0.5.5".freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: seira
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.3
4
+ version: 0.5.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scott Ringwelski
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-01-24 00:00:00.000000000 Z
11
+ date: 2019-03-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: highline