datawire_mdk 2.0.5

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.
@@ -0,0 +1,267 @@
1
+ # Quark 1.0.406 run at 2016-08-31 13:21:53.028839
2
+ module Quark
3
+ require "quark"
4
+ def self.mdk_discovery; MdkDiscovery; end
5
+ module MdkDiscovery
6
+ def self.synapse; Synapse; end
7
+ module Synapse
8
+ require "datawire-quark-core"
9
+ require_relative '../quark/reflect' # 0 ('quark',) ('mdk_discovery',)
10
+ require_relative '../mdk_discovery' # 0 () ('mdk_discovery',)
11
+ require_relative '../mdk_runtime/actors' # 0 ('mdk_runtime',) ('mdk_discovery',)
12
+ require_relative '../mdk_runtime' # 0 () ('mdk_discovery',)
13
+ require_relative '../datawire_mdk_md' # 0 () ('mdk_discovery',)
14
+ require_relative '../mdk_runtime/files' # 0 ('mdk_runtime',) ('mdk_discovery',)
15
+
16
+
17
+ def self.Synapse; Synapse; end
18
+ ##
19
+ # AirBnB Synapse discovery source.
20
+ #
21
+ # Reads Synapse-generated files (https://github.com/airbnb/synapse#file) and
22
+ # generates discovery events.
23
+ #
24
+ # Usage:
25
+ #
26
+ # m = mdk.init()
27
+ # m.registerDiscoverySource(Synapse('/path/to/synapse/files'))
28
+ # m.start()
29
+ #
30
+ # All resulting Node instances will have version '1.0' hardcoded, and an
31
+ # address of the form '<host>:<port>'.
32
+ #
33
+ # The original object from Synpase will be attached as the Node's properties.
34
+ #
35
+
36
+ class Synapse < ::DatawireQuarkCore::QuarkObject
37
+ attr_accessor :_directory_path
38
+ extend ::DatawireQuarkCore::Static
39
+
40
+ static mdk_discovery_synapse_Synapse_ref: -> { nil }
41
+
42
+
43
+
44
+ def initialize(directory_path)
45
+
46
+ self.__init_fields__
47
+ (self)._directory_path = directory_path
48
+
49
+ nil
50
+ end
51
+
52
+
53
+
54
+
55
+ def create(subscriber, runtime)
56
+
57
+ return ::Quark.mdk_discovery.synapse._SynapseSource.new(subscriber, (self)._directory_path, runtime)
58
+
59
+ nil
60
+ end
61
+
62
+ def isRegistrar()
63
+
64
+ return false
65
+
66
+ nil
67
+ end
68
+
69
+ def _getClass()
70
+
71
+ return "mdk_discovery.synapse.Synapse"
72
+
73
+ nil
74
+ end
75
+
76
+ def _getField(name)
77
+
78
+ if ((name) == ("_directory_path"))
79
+ return (self)._directory_path
80
+ end
81
+ return nil
82
+
83
+ nil
84
+ end
85
+
86
+ def _setField(name, value)
87
+
88
+ if ((name) == ("_directory_path"))
89
+ (self)._directory_path = ::DatawireQuarkCore.cast(value) { ::String }
90
+ end
91
+
92
+ nil
93
+ end
94
+
95
+ def __init_fields__()
96
+
97
+ self._directory_path = nil
98
+
99
+ nil
100
+ end
101
+
102
+
103
+ end
104
+ Synapse.unlazy_statics
105
+
106
+ def self._SynapseSource; SynapseSource; end
107
+ ##
108
+ # Implementation of the Synapse discovery source.
109
+
110
+ class SynapseSource < ::DatawireQuarkCore::QuarkObject
111
+ attr_accessor :subscriber, :directory_path, :files, :dispatcher
112
+ extend ::DatawireQuarkCore::Static
113
+
114
+ static mdk_discovery_synapse__SynapseSource_ref: -> { nil }
115
+
116
+
117
+
118
+ def initialize(subscriber, directory_path, runtime)
119
+
120
+ self.__init_fields__
121
+ (self).subscriber = subscriber
122
+ (self).directory_path = directory_path
123
+ (self).files = runtime.getFileService()
124
+
125
+ nil
126
+ end
127
+
128
+
129
+
130
+
131
+ def onStart(dispatcher)
132
+
133
+ (self).dispatcher = dispatcher
134
+ (self).dispatcher.tell(self, ::Quark.mdk_runtime.files.SubscribeChanges.new((self).directory_path), (self).files)
135
+
136
+ nil
137
+ end
138
+
139
+ ##
140
+ # Convert '/path/to/service_name.json' to 'service_name'.
141
+
142
+ def _pathToServiceName(filename)
143
+
144
+ parts = ::DatawireQuarkCore.split(filename, "/")
145
+ service = (parts)[((parts).size) - (1)]
146
+ return (service)[(0)...(((service).size) - (5))]
147
+
148
+ nil
149
+ end
150
+
151
+ ##
152
+ # Send an appropriate update to the subscriber for this DiscoverySource.
153
+
154
+ def _update(service, nodes)
155
+
156
+ (self).dispatcher.tell(self, ::Quark.mdk_discovery.ReplaceCluster.new(service, nodes), (self).subscriber)
157
+
158
+ nil
159
+ end
160
+
161
+ def onMessage(origin, message)
162
+
163
+ typeId = (::Quark.quark.reflect.QuarkClass.get(::DatawireQuarkCore._getClass(message))).id
164
+ service = nil
165
+ if ((typeId) == ("mdk_runtime.files.FileContents"))
166
+ contents = ::DatawireQuarkCore.cast(message) { ::Quark.mdk_runtime.files.FileContents }
167
+ if (!(((contents).path).end_with?(".json")))
168
+ return
169
+ end
170
+ service = self._pathToServiceName((contents).path)
171
+ json = ::DatawireQuarkCore::JSONObject.parse((contents).contents)
172
+ nodes = ::DatawireQuarkCore::List.new([])
173
+ idx = 0
174
+ while ((idx) < (json.size())) do
175
+ entry = json.getListItem(idx)
176
+ node = ::Quark.mdk_discovery.Node.new()
177
+ (node).service = service
178
+ (node).version = "1.0"
179
+ host = entry.getObjectItem("host").getString()
180
+ port = ((entry.getObjectItem("port").getNumber()).round()).to_s
181
+ (node).address = ((host) + (":")) + (port)
182
+ (nodes) << (node)
183
+ idx = (idx) + (1)
184
+ end
185
+ self._update(service, nodes)
186
+ return
187
+ end
188
+ if ((typeId) == ("mdk_runtime.files.FileDeleted"))
189
+ deleted = ::DatawireQuarkCore.cast(message) { ::Quark.mdk_runtime.files.FileDeleted }
190
+ service = self._pathToServiceName((deleted).path)
191
+ self._update(service, ::DatawireQuarkCore::List.new([]))
192
+ return
193
+ end
194
+
195
+ nil
196
+ end
197
+
198
+ def _getClass()
199
+
200
+ return "mdk_discovery.synapse._SynapseSource"
201
+
202
+ nil
203
+ end
204
+
205
+ def _getField(name)
206
+
207
+ if ((name) == ("subscriber"))
208
+ return (self).subscriber
209
+ end
210
+ if ((name) == ("directory_path"))
211
+ return (self).directory_path
212
+ end
213
+ if ((name) == ("files"))
214
+ return (self).files
215
+ end
216
+ if ((name) == ("dispatcher"))
217
+ return (self).dispatcher
218
+ end
219
+ return nil
220
+
221
+ nil
222
+ end
223
+
224
+ def _setField(name, value)
225
+
226
+ if ((name) == ("subscriber"))
227
+ (self).subscriber = ::DatawireQuarkCore.cast(value) { ::Quark.mdk_runtime.actors.Actor }
228
+ end
229
+ if ((name) == ("directory_path"))
230
+ (self).directory_path = ::DatawireQuarkCore.cast(value) { ::String }
231
+ end
232
+ if ((name) == ("files"))
233
+ (self).files = ::DatawireQuarkCore.cast(value) { ::Quark.mdk_runtime.files.FileActor }
234
+ end
235
+ if ((name) == ("dispatcher"))
236
+ (self).dispatcher = ::DatawireQuarkCore.cast(value) { ::Quark.mdk_runtime.actors.MessageDispatcher }
237
+ end
238
+
239
+ nil
240
+ end
241
+
242
+ ##
243
+ # The Actor should begin shutting down.
244
+
245
+ def onStop()
246
+
247
+ nil
248
+
249
+ nil
250
+ end
251
+
252
+ def __init_fields__()
253
+
254
+ self.subscriber = nil
255
+ self.directory_path = nil
256
+ self.files = nil
257
+ self.dispatcher = nil
258
+
259
+ nil
260
+ end
261
+
262
+
263
+ end
264
+ SynapseSource.unlazy_statics
265
+ end # module Synapse
266
+ end # module MdkDiscovery
267
+ end # module Quark
@@ -0,0 +1,281 @@
1
+ # Quark 1.0.406 run at 2016-08-31 13:21:53.028839
2
+ module Quark
3
+ require "quark"
4
+ def self.mdk_introspection; MdkIntrospection; end
5
+ module MdkIntrospection
6
+ require "datawire-quark-core"
7
+ require_relative 'quark/reflect' # 0 ('quark',) ()
8
+ require_relative 'datawire_mdk_md' # 0 () ()
9
+ require_relative 'mdk_runtime' # 0 () ()
10
+ require_relative 'quark' # 0 () ()
11
+ require_relative 'quark/concurrent' # 0 ('quark',) ()
12
+ require_relative 'mdk_introspection/aws' # 0 ('mdk_introspection',) ()
13
+ require_relative 'mdk_introspection/kubernetes' # 0 ('mdk_introspection',) ()
14
+
15
+
16
+ def self.Supplier; Supplier; end
17
+ ##
18
+ # A Supplier has a 'get' method that can return a value to anyone who needs it.
19
+
20
+ class Supplier < ::DatawireQuarkCore::QuarkObject
21
+ extend ::DatawireQuarkCore::Static
22
+
23
+ static mdk_introspection_Supplier_quark_Object__ref: -> { nil }
24
+
25
+
26
+
27
+ def initialize()
28
+ self.__init_fields__
29
+
30
+ nil
31
+ end
32
+
33
+
34
+
35
+
36
+ ##
37
+ # Gets a value
38
+
39
+ def get()
40
+ raise NotImplementedError, '`Supplier.get` is an abstract method'
41
+
42
+ nil
43
+ end
44
+
45
+ def __init_fields__()
46
+
47
+
48
+ nil
49
+ end
50
+
51
+
52
+ end
53
+ Supplier.unlazy_statics
54
+
55
+ def self.DatawireToken; DatawireToken; end
56
+ class DatawireToken < ::DatawireQuarkCore::QuarkObject
57
+ extend ::DatawireQuarkCore::Static
58
+
59
+ static TOKEN_VARIABLE_NAME: -> { "DATAWIRE_TOKEN" }
60
+ static mdk_introspection_DatawireToken_ref: -> { nil }
61
+
62
+
63
+
64
+ def initialize()
65
+ self.__init_fields__
66
+
67
+ nil
68
+ end
69
+
70
+
71
+
72
+
73
+ ##
74
+ # Returns the Datawire Access Token by reading the environment variable DATAWIRE_TOKEN.
75
+
76
+ def self.getToken(env)
77
+
78
+ token = env.var(::Quark.mdk_introspection.DatawireToken.TOKEN_VARIABLE_NAME).get()
79
+ if ((token) == (nil))
80
+ raise ("Neither 'MDK_DISCOVERY_SOURCE' nor 'DATAWIRE_TOKEN' are set. Either set the former to an existing discovery source (e.g. 'synapse:path=/synapse/output_files/'), or use the Datawire cloud services. For the latter please visit https://app.datawire.io/#/signup to create a free account and get a token.")
81
+ end
82
+ return token
83
+
84
+ nil
85
+ end
86
+
87
+ def _getClass()
88
+
89
+ return "mdk_introspection.DatawireToken"
90
+
91
+ nil
92
+ end
93
+
94
+ def _getField(name)
95
+
96
+ if ((name) == ("TOKEN_VARIABLE_NAME"))
97
+ return ::Quark.mdk_introspection.DatawireToken.TOKEN_VARIABLE_NAME
98
+ end
99
+ return nil
100
+
101
+ nil
102
+ end
103
+
104
+ def _setField(name, value)
105
+
106
+ if ((name) == ("TOKEN_VARIABLE_NAME"))
107
+ ::Quark.mdk_introspection.DatawireToken.TOKEN_VARIABLE_NAME = ::DatawireQuarkCore.cast(value) { ::String }
108
+ end
109
+
110
+ nil
111
+ end
112
+
113
+ def __init_fields__()
114
+
115
+
116
+ nil
117
+ end
118
+
119
+
120
+ end
121
+ DatawireToken.unlazy_statics
122
+
123
+ def self.Platform; Platform; end
124
+ class Platform < ::DatawireQuarkCore::QuarkObject
125
+ extend ::DatawireQuarkCore::Static
126
+
127
+ static PLATFORM_TYPE_VARIABLE_NAME: -> { "DATAWIRE_PLATFORM_TYPE" }
128
+ static PLATFORM_TYPE_EC2: -> { "EC2" }
129
+ static PLATFORM_TYPE_GOOGLE_COMPUTE: -> { "GOOGLE_COMPUTE" }
130
+ static PLATFORM_TYPE_GOOGLE_CONTAINER: -> { "GOOGLE_CONTAINER" }
131
+ static PLATFORM_TYPE_KUBERNETES: -> { "Kubernetes" }
132
+ static ROUTABLE_HOST_VARIABLE_NAME: -> { "DATAWIRE_ROUTABLE_HOST" }
133
+ static ROUTABLE_PORT_VARIABLE_NAME: -> { "DATAWIRE_ROUTABLE_PORT" }
134
+ static mdk_introspection_Platform_ref: -> { nil }
135
+
136
+
137
+
138
+ def initialize()
139
+ self.__init_fields__
140
+
141
+ nil
142
+ end
143
+
144
+
145
+
146
+
147
+ def self.platformType(env)
148
+
149
+ result = env.var(::Quark.mdk_introspection.Platform.PLATFORM_TYPE_VARIABLE_NAME).get()
150
+ if ((result) != (nil))
151
+ result = (result).upcase
152
+ end
153
+ return result
154
+
155
+ nil
156
+ end
157
+
158
+ ##
159
+ # Returns the routable hostname or IP for this service instance.
160
+ # This method always returns the value of the environment variable DATAWIRE_ROUTABLE_HOST if it is defined.
161
+
162
+ def self.getRoutableHost(env)
163
+
164
+ result = ::DatawireQuarkCore.cast(nil) { ::String }
165
+ logger = ::Quark.quark._getLogger("Platform")
166
+ if (env.var(::Quark.mdk_introspection.Platform.ROUTABLE_HOST_VARIABLE_NAME).isDefined())
167
+ logger.debug((("Using value in environment variable '") + (::Quark.mdk_introspection.Platform.ROUTABLE_HOST_VARIABLE_NAME)) + ("'"))
168
+ result = env.var(::Quark.mdk_introspection.Platform.ROUTABLE_HOST_VARIABLE_NAME).get()
169
+ else
170
+ if ((::Quark.mdk_introspection.Platform.platformType(env)) == (nil))
171
+ logger.error((("Platform type not specified in environment variable '") + (::Quark.mdk_introspection.Platform.PLATFORM_TYPE_VARIABLE_NAME)) + ("'"))
172
+ ::Quark.quark.concurrent.Context.runtime().fail("Environment variable 'DATAWIRE_PLATFORM_TYPE' is not set.")
173
+ end
174
+ if ((::Quark.mdk_introspection.Platform.platformType(env)).start_with?(::Quark.mdk_introspection.Platform.PLATFORM_TYPE_EC2))
175
+ logger.debug((::Quark.mdk_introspection.Platform.PLATFORM_TYPE_VARIABLE_NAME) + (" = EC2"))
176
+ parts = ::DatawireQuarkCore.split(::Quark.mdk_introspection.Platform.platformType(env), ":")
177
+ logger.debug(("Platform Scope = ") + ((parts)[1]))
178
+ if (((parts).size) == (2))
179
+ return ::Quark.mdk_introspection.aws.Ec2Host.new(env, (parts)[1]).get()
180
+ else
181
+ logger.error((("Invalid format for '") + (::Quark.mdk_introspection.Platform.PLATFORM_TYPE_VARIABLE_NAME)) + ("' starting with 'ec2'. Expected (ec2:<scope>)"))
182
+ ::Quark.quark.concurrent.Context.runtime().fail("Invalid format for DATAWIRE_PLATFORM_TYPE == EC2. Expected EC2:<scope>.")
183
+ end
184
+ end
185
+ end
186
+ return result
187
+
188
+ nil
189
+ end
190
+
191
+ ##
192
+ # Returns the routable port number for this service instance or uses the provided port if a value cannot be resolved.
193
+ # This method always returns the value of the environment variable DATAWIRE_ROUTABLE_PORT if it is defined.
194
+
195
+ def self.getRoutablePort(env, servicePort)
196
+
197
+ if (env.var(::Quark.mdk_introspection.Platform.ROUTABLE_PORT_VARIABLE_NAME).isDefined())
198
+ return Integer(env.var(::Quark.mdk_introspection.Platform.ROUTABLE_PORT_VARIABLE_NAME).get())
199
+ end
200
+ if ((::Quark.mdk_introspection.Platform.platformType(env)) == (::Quark.mdk_introspection.Platform.PLATFORM_TYPE_KUBERNETES))
201
+ return ::Quark.mdk_introspection.kubernetes.KubernetesPort.new().get()
202
+ end
203
+ return servicePort
204
+
205
+ nil
206
+ end
207
+
208
+ def _getClass()
209
+
210
+ return "mdk_introspection.Platform"
211
+
212
+ nil
213
+ end
214
+
215
+ def _getField(name)
216
+
217
+ if ((name) == ("PLATFORM_TYPE_VARIABLE_NAME"))
218
+ return ::Quark.mdk_introspection.Platform.PLATFORM_TYPE_VARIABLE_NAME
219
+ end
220
+ if ((name) == ("PLATFORM_TYPE_EC2"))
221
+ return ::Quark.mdk_introspection.Platform.PLATFORM_TYPE_EC2
222
+ end
223
+ if ((name) == ("PLATFORM_TYPE_GOOGLE_COMPUTE"))
224
+ return ::Quark.mdk_introspection.Platform.PLATFORM_TYPE_GOOGLE_COMPUTE
225
+ end
226
+ if ((name) == ("PLATFORM_TYPE_GOOGLE_CONTAINER"))
227
+ return ::Quark.mdk_introspection.Platform.PLATFORM_TYPE_GOOGLE_CONTAINER
228
+ end
229
+ if ((name) == ("PLATFORM_TYPE_KUBERNETES"))
230
+ return ::Quark.mdk_introspection.Platform.PLATFORM_TYPE_KUBERNETES
231
+ end
232
+ if ((name) == ("ROUTABLE_HOST_VARIABLE_NAME"))
233
+ return ::Quark.mdk_introspection.Platform.ROUTABLE_HOST_VARIABLE_NAME
234
+ end
235
+ if ((name) == ("ROUTABLE_PORT_VARIABLE_NAME"))
236
+ return ::Quark.mdk_introspection.Platform.ROUTABLE_PORT_VARIABLE_NAME
237
+ end
238
+ return nil
239
+
240
+ nil
241
+ end
242
+
243
+ def _setField(name, value)
244
+
245
+ if ((name) == ("PLATFORM_TYPE_VARIABLE_NAME"))
246
+ ::Quark.mdk_introspection.Platform.PLATFORM_TYPE_VARIABLE_NAME = ::DatawireQuarkCore.cast(value) { ::String }
247
+ end
248
+ if ((name) == ("PLATFORM_TYPE_EC2"))
249
+ ::Quark.mdk_introspection.Platform.PLATFORM_TYPE_EC2 = ::DatawireQuarkCore.cast(value) { ::String }
250
+ end
251
+ if ((name) == ("PLATFORM_TYPE_GOOGLE_COMPUTE"))
252
+ ::Quark.mdk_introspection.Platform.PLATFORM_TYPE_GOOGLE_COMPUTE = ::DatawireQuarkCore.cast(value) { ::String }
253
+ end
254
+ if ((name) == ("PLATFORM_TYPE_GOOGLE_CONTAINER"))
255
+ ::Quark.mdk_introspection.Platform.PLATFORM_TYPE_GOOGLE_CONTAINER = ::DatawireQuarkCore.cast(value) { ::String }
256
+ end
257
+ if ((name) == ("PLATFORM_TYPE_KUBERNETES"))
258
+ ::Quark.mdk_introspection.Platform.PLATFORM_TYPE_KUBERNETES = ::DatawireQuarkCore.cast(value) { ::String }
259
+ end
260
+ if ((name) == ("ROUTABLE_HOST_VARIABLE_NAME"))
261
+ ::Quark.mdk_introspection.Platform.ROUTABLE_HOST_VARIABLE_NAME = ::DatawireQuarkCore.cast(value) { ::String }
262
+ end
263
+ if ((name) == ("ROUTABLE_PORT_VARIABLE_NAME"))
264
+ ::Quark.mdk_introspection.Platform.ROUTABLE_PORT_VARIABLE_NAME = ::DatawireQuarkCore.cast(value) { ::String }
265
+ end
266
+
267
+ nil
268
+ end
269
+
270
+ def __init_fields__()
271
+
272
+
273
+ nil
274
+ end
275
+
276
+
277
+ end
278
+ Platform.unlazy_statics
279
+
280
+ end # module MdkIntrospection
281
+ end # module Quark