1 | _ = require 'lodash'
|
2 | url = require 'url'
|
3 | async = require 'async'
|
4 | request = require 'request'
|
5 | moment = require 'moment'
|
6 | debug = require('debug')('deploy-state-util:service-state-service')
|
7 |
|
8 | class GovernatorService
|
9 | constructor: ({ config }) ->
|
10 | @serviceStates = config['service-state']
|
11 |
|
12 | getStatuses: ({ repo, owner, tag }, callback) =>
|
13 | _getStatus = async.apply(@getStatus, { repo, owner, tag })
|
14 | async.mapValues @serviceStates, _getStatus, callback
|
15 |
|
16 | getStatus: ({ repo, owner, tag }, { hostname, username, password }, cluster, callback) =>
|
17 | baseUrl = url.format {
|
18 | hostname: hostname
|
19 | protocol: 'https'
|
20 | slashes: true
|
21 | }
|
22 | options = {
|
23 | uri: "/#{owner}/#{repo}/docker_url",
|
24 | baseUrl,
|
25 | auth: {
|
26 | username,
|
27 | password,
|
28 | },
|
29 | }
|
30 | debug 'get docker_url', options
|
31 | request.get options, (error, response, body) =>
|
32 | debug 'got docker_url', { baseUrl, body, error, statusCode: response?.statusCode }
|
33 | return callback error if error?
|
34 | callback null, body
|
35 |
|
36 | module.exports = GovernatorService
|