inventarium 0.0.1 → 0.1.0

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.
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