Module: BlackStack::Pampa

Defined in:
lib/pampa_workers.rb

Constant Summary collapse

SLEEP_SECONDS =
10
@@division_name =
nil
@@timeout =
7
@@api_key =

Api-key of the client who will be the owner of a process.

nil
@@api_protocol =

Protocol, HTTP or HTTPS, of the BlackStack server where this process will be registered.

nil
@@api_domain =

Domain of the BlackStack server where this process will be registered.

nil
@@api_port =

Port of the BlackStack server where this process will be registered.

nil
@@storage_folder =

path where you will store the data of each client

nil
@@storage_sub_folders =
[]
@@id_timezone_default =

default timezome for any new user

nil
@@farm_external_ip_addresses =

Array of external IP addresses of the servers where farms are running. If you have many servers running behind a NAT server, only add the IP of the external gateway here. This array is used to know if a worker is running inside your farm datacenter, or it is running in the computer of someone else.

[]
@@db_url =

Central database connection parameters

nil
@@db_port =
nil
@@db_name =
nil
@@db_user =
nil
@@db_password =
nil

Class Method Summary collapse

Class Method Details

.api_domainObject



73
74
75
# File 'lib/pampa_workers.rb', line 73

def self.api_domain
  @@api_domain
end

.api_keyObject



57
58
59
# File 'lib/pampa_workers.rb', line 57

def self.api_key()
  @@api_key 
end

.api_portObject



81
82
83
# File 'lib/pampa_workers.rb', line 81

def self.api_port
  @@api_port
end

.api_protocolObject



65
66
67
# File 'lib/pampa_workers.rb', line 65

def self.api_protocol
  @@api_protocol
end

.api_urlObject

get the full URL of the worker api server



86
87
88
# File 'lib/pampa_workers.rb', line 86

def self.api_url()
  "#{BlackStack::Pampa::api_protocol}://#{BlackStack::Pampa::api_domain}:#{BlackStack::Pampa::api_port}"
end

.connection_descriptorObject

TODO: doc me!



199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
# File 'lib/pampa_workers.rb', line 199

def self.connection_descriptor()           
  ret = nil
  
  # validar que el formato no sea nulo

  if (self.division_name.to_s.length == 0)
    raise "Division name expected."
  end
  
  if (self.division_name == "local") 
    ret = {
      :adapter => 'tinytds',
      :dataserver => BlackStack::Pampa::db_url, # IP or hostname

      :port => BlackStack::Pampa::db_port, # Required when using other that 1433 (default)

      :database => BlackStack::Pampa::db_name,
      :user => BlackStack::Pampa::db_user,
      :password => BlackStack::Pampa::db_password,
      :timeout => BlackStack::Pampa::timeout
      }      
  else
    url = "#{BlackStack::Pampa::api_url}/api1.2/division/get.json"
    res = BlackStack::Netting::call_post(url, {
      'api_key' => BlackStack::Pampa::api_key, 
      'dname' => "#{self.division_name}",
    })
    parsed = JSON.parse(res.body)
    
    if (parsed["status"] != BlackStack::Netting::SUCCESS)
      raise "Error getting connection string: #{parsed["status"]}"
    else
      wid = parsed["value"]
      
      ret = {
        :adapter => 'tinytds',
        :dataserver => parsed["db_url"], # IP or hostname

        :port => parsed["db_port"], # only required if port is different than 1433

        :database => parsed["db_name"],
        :user => parsed["db_user"],
        :password => parsed["db_password"],
        :timeout => BlackStack::Pampa::timeout
      }
    end
  end
  
  ret
end

.db_connectionObject



246
247
248
# File 'lib/pampa_workers.rb', line 246

def self.db_connection()
  Sequel.connect(BlackStack::Pampa::connection_descriptor)
end

.db_nameObject



175
176
177
# File 'lib/pampa_workers.rb', line 175

def self.db_name
  @@db_name
end

.db_passwordObject



185
186
187
# File 'lib/pampa_workers.rb', line 185

def self.db_password
  @@db_password
end

.db_portObject



170
171
172
# File 'lib/pampa_workers.rb', line 170

def self.db_port
  @@db_port
end

.db_urlObject



165
166
167
# File 'lib/pampa_workers.rb', line 165

def self.db_url
  @@db_url
end

.db_userObject



180
181
182
# File 'lib/pampa_workers.rb', line 180

def self.db_user
  @@db_user
end

.division_nameObject



36
37
38
# File 'lib/pampa_workers.rb', line 36

def self.division_name() 
  @@division_name
end

.farm_external_ip_addressesObject



148
149
150
# File 'lib/pampa_workers.rb', line 148

def self.farm_external_ip_addresses()
  @@farm_external_ip_addresses
end

.id_timezone_defaultObject



131
132
133
# File 'lib/pampa_workers.rb', line 131

def self.id_timezone_default()
  @@id_timezone_default
end

.require_db_classesObject



251
252
253
254
# File 'lib/pampa_workers.rb', line 251

def self.require_db_classes()
  # You have to load all the Sinatra classes after connect the database.

  require_relative '../lib/pampa-local.rb'
end

.set_api_key(s) ⇒ Object



91
92
93
# File 'lib/pampa_workers.rb', line 91

def self.set_api_key(s)
  @@api_key = s
end

.set_api_url(h) ⇒ Object



96
97
98
99
100
101
# File 'lib/pampa_workers.rb', line 96

def self.set_api_url(h)
  @@api_key = h[:api_key]
  @@api_protocol = h[:api_protocol]
  @@api_domain = h[:api_domain]
  @@api_port = h[:api_port]
end

.set_db_params(h) ⇒ Object

Set connection params to the central database



190
191
192
193
194
195
196
# File 'lib/pampa_workers.rb', line 190

def self.set_db_params(h)
  @@db_url = h[:db_url]
  @@db_port = h[:db_port]
  @@db_name = h[:db_name]
  @@db_user = h[:db_user]
  @@db_password = h[:db_password]
end

.set_division_name(s) ⇒ Object



41
42
43
# File 'lib/pampa_workers.rb', line 41

def self.set_division_name(s) 
  @@division_name = s
end

.set_farm_external_ip_addresses(a) ⇒ Object



153
154
155
# File 'lib/pampa_workers.rb', line 153

def self.set_farm_external_ip_addresses(a)
  @@farm_external_ip_addresses = a
end

.set_id_timezone_default(id) ⇒ Object



136
137
138
# File 'lib/pampa_workers.rb', line 136

def self.set_id_timezone_default(id)
  @@id_timezone_default = id
end

.set_storage_folder(path) ⇒ Object



116
117
118
# File 'lib/pampa_workers.rb', line 116

def self.set_storage_folder(path)
  @@storage_folder = path
end

.set_storage_sub_folders(a) ⇒ Object



119
120
121
# File 'lib/pampa_workers.rb', line 119

def self.set_storage_sub_folders(a)
  @@storage_sub_folders = a
end

.set_timeout(n) ⇒ Object



50
51
52
# File 'lib/pampa_workers.rb', line 50

def self.set_timeout(n) 
  @@timeout = n
end

.storage_folderObject



108
109
110
# File 'lib/pampa_workers.rb', line 108

def self.storage_folder()
  @@storage_folder
end

.storage_sub_foldersObject



111
112
113
# File 'lib/pampa_workers.rb', line 111

def self.storage_sub_folders()
  @@storage_sub_folders
end

.timeoutObject



45
46
47
# File 'lib/pampa_workers.rb', line 45

def self.timeout() 
  @@timeout
end