kuby-core 0.17.0 → 0.18.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (91) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +44 -0
  3. data/Gemfile +6 -2
  4. data/Rakefile +5 -3
  5. data/bin/tapioca +29 -0
  6. data/kuby-core.gemspec +9 -11
  7. data/lib/kuby/basic_logger.rb +34 -34
  8. data/lib/kuby/cli_base.rb +43 -43
  9. data/lib/kuby/commands.rb +94 -11
  10. data/lib/kuby/definition.rb +12 -12
  11. data/lib/kuby/dependable.rb +20 -0
  12. data/lib/kuby/dependency.rb +14 -0
  13. data/lib/kuby/docker/alpine.rb +10 -10
  14. data/lib/kuby/docker/app_image.rb +11 -11
  15. data/lib/kuby/docker/app_phase.rb +36 -0
  16. data/lib/kuby/docker/assets_phase.rb +2 -2
  17. data/lib/kuby/docker/bundler_phase.rb +42 -40
  18. data/lib/kuby/docker/cli.rb +71 -43
  19. data/lib/kuby/docker/copy_phase.rb +7 -7
  20. data/lib/kuby/docker/credentials.rb +1 -0
  21. data/lib/kuby/docker/debian.rb +10 -10
  22. data/lib/kuby/docker/distro.rb +13 -13
  23. data/lib/kuby/docker/docker_uri.rb +20 -20
  24. data/lib/kuby/docker/dockerfile.rb +48 -39
  25. data/lib/kuby/docker/image.rb +66 -54
  26. data/lib/kuby/docker/inline_layer.rb +4 -4
  27. data/lib/kuby/docker/layer.rb +6 -6
  28. data/lib/kuby/docker/layer_stack.rb +35 -35
  29. data/lib/kuby/docker/local_tags.rb +16 -16
  30. data/lib/kuby/docker/package_list.rb +16 -16
  31. data/lib/kuby/docker/package_phase.rb +16 -16
  32. data/lib/kuby/docker/packages/managed_package.rb +13 -13
  33. data/lib/kuby/docker/packages/nodejs.rb +5 -5
  34. data/lib/kuby/docker/packages/package.rb +8 -8
  35. data/lib/kuby/docker/packages/simple_managed_package.rb +7 -7
  36. data/lib/kuby/docker/packages/yarn.rb +6 -6
  37. data/lib/kuby/docker/remote_tags.rb +16 -16
  38. data/lib/kuby/docker/setup_phase.rb +18 -20
  39. data/lib/kuby/docker/spec.rb +93 -72
  40. data/lib/kuby/docker/timestamp_tag.rb +16 -11
  41. data/lib/kuby/docker/timestamped_image.rb +59 -40
  42. data/lib/kuby/docker/webserver_phase.rb +20 -20
  43. data/lib/kuby/docker/yarn_phase.rb +29 -5
  44. data/lib/kuby/docker.rb +2 -1
  45. data/lib/kuby/kubernetes/bare_metal_provider.rb +9 -9
  46. data/lib/kuby/kubernetes/deployer.rb +22 -10
  47. data/lib/kuby/kubernetes/docker_config.rb +1 -0
  48. data/lib/kuby/kubernetes/provider.rb +1 -0
  49. data/lib/kuby/kubernetes/spec.rb +47 -7
  50. data/lib/kuby/plugin.rb +22 -1
  51. data/lib/kuby/plugins/nginx_ingress.rb +8 -6
  52. data/lib/kuby/plugins/rails_app/assets.rb +16 -4
  53. data/lib/kuby/plugins/rails_app/assets_image.rb +17 -8
  54. data/lib/kuby/plugins/rails_app/crdb/plugin.rb +473 -0
  55. data/lib/kuby/plugins/rails_app/crdb.rb +9 -0
  56. data/lib/kuby/plugins/rails_app/database.rb +12 -8
  57. data/lib/kuby/plugins/rails_app/generators/kuby.rb +17 -16
  58. data/lib/kuby/plugins/rails_app/plugin.rb +29 -18
  59. data/lib/kuby/plugins/rails_app/sqlite.rb +7 -3
  60. data/lib/kuby/plugins/rails_app/tasks.rake +25 -12
  61. data/lib/kuby/plugins/rails_app.rb +1 -0
  62. data/lib/kuby/plugins/system.rb +16 -0
  63. data/lib/kuby/plugins.rb +1 -0
  64. data/lib/kuby/railtie.rb +31 -1
  65. data/lib/kuby/tasks.rb +72 -5
  66. data/lib/kuby/trailing_hash.rb +2 -2
  67. data/lib/kuby/utils/sem_ver/constraint.rb +68 -0
  68. data/lib/kuby/utils/sem_ver/constraint_set.rb +25 -0
  69. data/lib/kuby/utils/sem_ver/version.rb +49 -0
  70. data/lib/kuby/utils/sem_ver.rb +17 -0
  71. data/lib/kuby/utils/which.rb +65 -0
  72. data/lib/kuby/utils.rb +7 -1
  73. data/lib/kuby/version.rb +1 -1
  74. data/lib/kuby.rb +37 -2
  75. data/rbi/kuby-core.rbi +2128 -0
  76. data/spec/docker/spec_spec.rb +50 -26
  77. data/spec/dummy/app/channels/application_cable/channel.rb +2 -1
  78. data/spec/dummy/app/channels/application_cable/connection.rb +2 -1
  79. data/spec/dummy/app/controllers/application_controller.rb +2 -1
  80. data/spec/dummy/app/jobs/application_job.rb +2 -1
  81. data/spec/dummy/app/mailers/application_mailer.rb +2 -1
  82. data/spec/dummy/app/models/application_record.rb +2 -1
  83. data/spec/dummy/config/application.rb +2 -1
  84. data/spec/dummy/config/initializers/wrap_parameters.rb +2 -1
  85. data/spec/dummy/config/routes.rb +2 -1
  86. data/spec/dummy/test/application_system_test_case.rb +2 -1
  87. data/spec/dummy/test/channels/application_cable/connection_test.rb +2 -1
  88. data/spec/spec_helper.rb +13 -1
  89. metadata +44 -39
  90. data/lib/kuby/plugins/rails_app/mysql.rb +0 -158
  91. data/lib/kuby/plugins/rails_app/postgres.rb +0 -163
@@ -1,163 +0,0 @@
1
- # typed: false
2
-
3
- require 'kube-dsl'
4
- require 'kuby/kube-db'
5
-
6
- module Kuby
7
- module Plugins
8
- module RailsApp
9
- class Postgres < ::Kuby::Plugin
10
- ROLE = 'web'.freeze
11
-
12
- attr_reader :environment, :configs
13
-
14
- def initialize(environment, configs)
15
- @environment = environment
16
- @configs = configs
17
-
18
- user(config['username'])
19
- password(config['password'])
20
- end
21
-
22
- def requires_credentials?
23
- true
24
- end
25
-
26
- def name
27
- :postgres
28
- end
29
-
30
- def resources
31
- @resources ||= [secret, database]
32
- end
33
-
34
- def after_configuration
35
- environment.docker.package_phase.add(:postgres_dev)
36
- environment.docker.package_phase.add(:postgres_client)
37
- end
38
-
39
- def host
40
- # host is the same as the name thanks to k8s DNS
41
- @host ||= database.metadata.name
42
- end
43
-
44
- def rewritten_configs
45
- # deep dup
46
- @rewritten_configs ||= Marshal.load(Marshal.dump(configs)).tap do |new_configs|
47
- new_configs[environment.name]['host'] = host
48
- end
49
- end
50
-
51
- def user(user)
52
- secret do
53
- data do
54
- set :POSTGRES_USER, user
55
- end
56
- end
57
- end
58
-
59
- def password(password)
60
- secret do
61
- data do
62
- set :POSTGRES_PASSWORD, password
63
- end
64
- end
65
- end
66
-
67
- def storage(amount)
68
- database do
69
- spec do
70
- storage do
71
- resources do
72
- requests do
73
- set :storage, amount
74
- end
75
- end
76
- end
77
- end
78
- end
79
- end
80
-
81
- def secret(&block)
82
- context = self
83
-
84
- @secret ||= KubeDSL.secret do
85
- metadata do
86
- name "#{context.base_name}-postgres-secret"
87
- namespace context.kubernetes.namespace.metadata.name
88
- end
89
-
90
- type 'Opaque'
91
- end
92
-
93
- @secret.instance_eval(&block) if block
94
- @secret
95
- end
96
-
97
- def database(&block)
98
- context = self
99
-
100
- @database ||= Kuby::KubeDB.postgres do
101
- api_version 'kubedb.com/v1alpha1'
102
-
103
- metadata do
104
- name "#{context.base_name}-postgres"
105
- namespace context.kubernetes.namespace.metadata.name
106
- end
107
-
108
- spec do
109
- database_secret do
110
- secret_name context.secret.metadata.name
111
- end
112
-
113
- version '11.2'
114
- standby_mode 'Hot'
115
- streaming_mode 'asynchronous'
116
- storage_type 'Durable'
117
-
118
- storage do
119
- storage_class_name context.kubernetes.provider.storage_class_name
120
- access_modes ['ReadWriteOnce']
121
-
122
- resources do
123
- requests do
124
- add :storage, '10Gi'
125
- end
126
- end
127
- end
128
-
129
- termination_policy 'DoNotTerminate'
130
- end
131
- end
132
-
133
- @database.instance_eval(&block) if block
134
- @database
135
- end
136
-
137
- def base_name
138
- @base_name ||= "#{kubernetes.selector_app}-#{ROLE}"
139
- end
140
-
141
- def kubernetes
142
- environment.kubernetes
143
- end
144
-
145
- private
146
-
147
- def config
148
- configs[environment.name]
149
- end
150
- end
151
- end
152
- end
153
- end
154
-
155
- Kuby.register_package(:postgres_dev,
156
- debian: 'postgresql-client',
157
- alpine: 'postgresql-dev'
158
- )
159
-
160
- Kuby.register_package(:postgres_client,
161
- debian: 'postgresql-client',
162
- alpine: 'postgresql-client'
163
- )