inventarium 0.0.1 → 0.1.0

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: 6a365d48edd4ef2847ee4f185ca259dc1e5efe99a89157291433ea2a82a1da41
4
- data.tar.gz: a55f8658692f431cebec5f78cf952a327f42a4387c9ed2384018646838b14a2d
3
+ metadata.gz: 8190e44c2f3d677fb1a36a22f450a713671b5e3cb7fd4d0d63e697c2b7b91374
4
+ data.tar.gz: c3f8c732e4a486d2c5e6087d9c3a8d8c9c97ac742f00815e60af940ab4f25a74
5
5
  SHA512:
6
- metadata.gz: ac93407137adf6877d2bff661177f5489da1190ef60b118f55f386fccd2eefbbc64418f47843cd4b9817d3ed49cc48751399e4fe70298d3b3ef3b0c606fff8bf
7
- data.tar.gz: 1b7258347f5c6dd81e660e10ee65f0bf849fd8224b1d630b564c65a9a33e2adb6affe3ca04058afc016a2352af2af8c623d154f92e3292798c187009156b858a
6
+ metadata.gz: 719d3230c787d58226fd3fd02189a0bd94cced40964a9ab3dccaf7e8996300e14963de696fa171cbf4cf489f92ae8decca29633cedaee1bc74f6a8ec7aebacf3
7
+ data.tar.gz: '0958672f87afe42f865603bf5bb1ccbd4a2313a2d3ee60215a8a92bdc0f8cf69fef75b4f80f5963d6f82748ba8164317569e4c7da0c3972c94e88d55a04988bf'
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- inventarium (0.0.1)
4
+ inventarium (0.1.0)
5
5
  dry-cli (~> 0.4)
6
6
 
7
7
  GEM
@@ -6,21 +6,28 @@ module Inventarium
6
6
  desc "Create an empty service.yml file for the service"
7
7
 
8
8
  example [
9
- " # Generate service.yml in root folder",
10
- "./.service_meta # Generate service.yml in '.service_meta' folder"
9
+ " # Generate service.yml in root folder",
10
+ "./.service_meta/ # Generate service.yml in '.service_meta' folder",
11
+ "order_service.yaml # Generate order_service.yml in root folder"
11
12
  ]
12
13
 
13
14
  def call(args: [], **)
14
15
  dir = args.first || '.'
15
16
 
16
17
  pastel = Pastel.new
17
-
18
18
  printf "Generating a new service.yaml\t\t"
19
- sleep(0.3)
19
+
20
+ FileUtils.cp(template_file_path, dir)
20
21
  puts "[#{pastel.green('DONE')}]"
21
22
 
22
23
  # puts "Created a new service.yml file in '#{dir}' directory"
23
24
  end
25
+
26
+ private
27
+
28
+ def template_file_path
29
+ File.expand_path(File.dirname(__FILE__) + "/templates/service.yaml")
30
+ end
24
31
  end
25
32
  end
26
33
  end
@@ -1,5 +1,8 @@
1
1
  require 'tty-progressbar'
2
2
  require "pastel"
3
+ require 'net/http'
4
+ require 'yaml'
5
+ require 'json'
3
6
 
4
7
  module Inventarium
5
8
  module CLI
@@ -11,18 +14,56 @@ module Inventarium
11
14
  "./meta/specific_service.yml # Push specific_service.yml from './meta' folder"
12
15
  ]
13
16
 
17
+ DEFAULT_BASE_URL = 'https://app.inventarium.io'
18
+
14
19
  def call(args: [], **)
15
- # dir = args.first || './service.yml'
16
- bar = TTY::ProgressBar.new("Puishing service.yaml to inventarium.io [:bar]", total: 30)
17
- 10.times do
18
- sleep(0.1)
19
- bar.advance(3)
20
+ path = args.first || './service.yml'
21
+
22
+ bar = TTY::ProgressBar.new("Puishing #{path} to inventarium.io [:bar]", total: 30)
23
+ bar.advance(10)
24
+
25
+ config = parse_config(path)
26
+
27
+ bar.advance(10)
28
+
29
+ response = push_config(config)
30
+
31
+ bar.advance(10)
32
+
33
+ case response.code
34
+ when '200'
35
+ pastel = Pastel.new
36
+ puts "[#{pastel.green('DONE')}]"
37
+ when '422'
38
+ pastel = Pastel.new
39
+ puts "[#{pastel.red('FAIL')}] #{response.body}"
40
+ when '500'
41
+ pastel = Pastel.new
42
+ puts "[#{pastel.red('FAIL')}] #{response.body}"
20
43
  end
21
44
 
22
- pastel = Pastel.new
23
- puts "[#{pastel.green('DONE')}]"
24
45
  # puts "Push a new service.yml file from '#{dir}' directory"
25
46
  end
47
+
48
+ private
49
+
50
+ def parse_config(path)
51
+ YAML.load_file(path)
52
+ end
53
+
54
+ def push_config(config)
55
+ base_url = ENV['INVENTARIUM_BASE_URL'] || DEFAULT_BASE_URL
56
+ url = URI("#{base_url}/api/services")
57
+
58
+ token = ENV['INVENTARIUM_TOKEN'].to_s
59
+
60
+ req = Net::HTTP::Post.new(url, 'X-INVENTARIUM-TOKEN' => token, 'Content-Type' => 'application/json')
61
+ req.body = { token: token, service: config }.to_json
62
+
63
+ http = Net::HTTP.new(url.hostname, url.port)
64
+ http.use_ssl = (url.scheme == "https")
65
+ http.request(req)
66
+ end
26
67
  end
27
68
  end
28
69
  end
@@ -0,0 +1,47 @@
1
+ version: v0
2
+
3
+ # You need to provide only name and key fields, everything else can be empty
4
+ # For example, if you don't have documentation or environments you can add it later
5
+
6
+ # required
7
+ name: Service
8
+ # required, should be unique for each service
9
+ key: service
10
+ description:
11
+ languages:
12
+ -
13
+ repository_link:
14
+ tags:
15
+ -
16
+
17
+ owner:
18
+ team_or_developer_name:
19
+ slack_channel:
20
+
21
+ service:
22
+ # optional, can be (critical | normal | internal | expiriment)
23
+ classification:
24
+ # optional, can be (adopt | hold | trial | in development)
25
+ status:
26
+
27
+ docs:
28
+ api:
29
+ maintenance:
30
+ domain:
31
+
32
+ # You can add any count of environments and you can use any names instead production, like stage, demo, etc
33
+ environments:
34
+ production:
35
+ url:
36
+ healthcheck_url:
37
+ logs_url:
38
+ error_traker_url:
39
+ tags:
40
+ - test
41
+ - specific gateway
42
+ monitoring:
43
+ # You can use any key-value objects here, like new_relic, grafana, etc
44
+ something:
45
+
46
+ operations:
47
+ ci_build_url:
@@ -1,3 +1,3 @@
1
1
  module Inventarium
2
- VERSION = '0.0.1'
2
+ VERSION = '0.1.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inventarium
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anton Davydov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-29 00:00:00.000000000 Z
11
+ date: 2020-05-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dry-cli
@@ -85,6 +85,7 @@ files:
85
85
  - lib/inventarium/cli.rb
86
86
  - lib/inventarium/cli/init.rb
87
87
  - lib/inventarium/cli/push.rb
88
+ - lib/inventarium/cli/templates/service.yaml
88
89
  - lib/inventarium/cli/version.rb
89
90
  - lib/inventarium/version.rb
90
91
  homepage: https://inventarium.io