avst-wizard 0.0.24 → 0.0.25
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 +8 -8
- data/README.md +1 -0
- data/avst-wizard.gemspec +1 -1
- data/bin/avst-wizard +13 -1
- data/lib/avst-wizard.rb +61 -29
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
OTdjNGJlNjNiNTM5ODkzN2MyOWY1YTMzZWYzYTRmYjkyNDJkNGRjYw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MGVjMGY3NGMwZmQ2NTk1YzBlYWNjNTgzNGI3YTEwODAxM2FlZTcwZg==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
YmRkNzllMmExZjBmYTVmMTcwMTQzYTExMTI0Yzg3MWUzYTlmNTRlYTdkNGVh
|
10
|
+
MTk5NmJkMWM0MjFjNGY3NGU0YzFiMDc4NzMzNzQxN2IyNWM1Zjg0ZWQ4YmUy
|
11
|
+
NmQ5MzRmMWJkNjc2OGJmZTFkOGFlMzlkMzVjNzQ3NGE4Nzg0MDk=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ODJkNmQ1NmYwNjE3MWNmODZlMTkxZjU4MzI0Nzg0MGY0YjNjYzE0ZmZjOTg3
|
14
|
+
MWM4OWJkYmVkNjUwMjFhYzFlYTUzOWZiNjYyOGFkYTIwZDJmZjgyNzc4NDNi
|
15
|
+
YTM2ODQ4YTRiNzYzM2FjNDhhOTdlOTkzNDc1YzY2ZjFmMmM1OGE=
|
data/README.md
CHANGED
@@ -26,6 +26,7 @@ avst-wizard --hostname hostname --product_type product_type --base_url url --hie
|
|
26
26
|
- hiera_config - custom hiera.yaml file, defaults to hiera.yaml in project root
|
27
27
|
- custom_config - file with required params setup, defaults to config/config.yaml
|
28
28
|
- ops - Prints out required parameters to set for specified product
|
29
|
+
-p, --use_tomcat_port PORT - Use tomcat port to connect to the application
|
29
30
|
|
30
31
|
## Default usage and configuration
|
31
32
|
|
data/avst-wizard.gemspec
CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = "avst-wizard"
|
7
|
-
spec.version = '0.0.
|
7
|
+
spec.version = '0.0.25'
|
8
8
|
spec.authors = ["Martin Brehovsky"]
|
9
9
|
spec.email = ["mbrehovsky@adaptavist.com"]
|
10
10
|
spec.summary = %q{Avstwizard}
|
data/bin/avst-wizard
CHANGED
@@ -37,6 +37,7 @@ Options:
|
|
37
37
|
-b, --base_url BASE_URL Url where the product is accessible
|
38
38
|
-c, --hiera_config CONFIG Hiera config file
|
39
39
|
-f, --custom_config CUSTOM Contains key-values that will be available to hiera to configure stages [default: #{avst_wizard_base}/config/config.yaml]
|
40
|
+
-p, --use_tomcat_port PORT Use tomcat port to connect to the application
|
40
41
|
-o, --ops Shows params required to setup the atlassian app
|
41
42
|
-v, --version VERSION Version of atlassian app, if not specified, default config is picked
|
42
43
|
DOCOPT
|
@@ -52,6 +53,8 @@ end
|
|
52
53
|
hostname = options["--hostname"]
|
53
54
|
product_type = options["--product_type"]
|
54
55
|
base_url = options["--base_url"]
|
56
|
+
use_tomcat_port = options["--use_tomcat_port"]
|
57
|
+
|
55
58
|
hiera_config = options["--hiera_config"]
|
56
59
|
custom_config = options["--custom_config"]
|
57
60
|
ops = options["--ops"]
|
@@ -135,7 +138,15 @@ unless base_url
|
|
135
138
|
end
|
136
139
|
begin
|
137
140
|
url_required_part = conf.get_config("url_required_part", false)
|
138
|
-
|
141
|
+
if use_tomcat_port
|
142
|
+
host_url = base_url
|
143
|
+
base_url = "http://localhost:#{use_tomcat_port}"
|
144
|
+
puts "Using direct tomcat connection to #{base_url}"
|
145
|
+
else
|
146
|
+
host_url = nil
|
147
|
+
puts "Going via #{base_url}"
|
148
|
+
end
|
149
|
+
runner = AvstWizard::AvstWizard.new(base_url, required_config, url_required_part, host_url)
|
139
150
|
|
140
151
|
|
141
152
|
# wait for app to start
|
@@ -249,6 +260,7 @@ begin
|
|
249
260
|
# In case something went wrong on the way
|
250
261
|
rescue Exception => e
|
251
262
|
message = e.message.force_encoding("utf-8")
|
263
|
+
puts e.backtrace.inspect
|
252
264
|
abort(e.message.red)
|
253
265
|
end
|
254
266
|
|
data/lib/avst-wizard.rb
CHANGED
@@ -24,63 +24,88 @@ module AvstWizard
|
|
24
24
|
|
25
25
|
attr_writer :atl_token
|
26
26
|
|
27
|
-
def initialize(url, required_config = {}, url_required_part=nil)
|
27
|
+
def initialize(url, required_config = {}, url_required_part=nil, host_url)
|
28
28
|
@url = url
|
29
29
|
@cookie = ""
|
30
30
|
@current_url = ""
|
31
31
|
@atl_token = ""
|
32
32
|
@required_config = required_config
|
33
33
|
@url_required_part = url_required_part
|
34
|
+
@host_url = host_url
|
34
35
|
end
|
35
36
|
|
36
37
|
# Does GET requests to url, follows redirects, stores cookies and xsrf.token if present
|
37
|
-
def get_stage_and_fetch_cookie(
|
38
|
+
def get_stage_and_fetch_cookie(request_url = @url , limit = 10)
|
38
39
|
# You should choose better exception.
|
39
40
|
raise ArgumentError, 'HTTP redirect too deep' if limit <= 0
|
40
|
-
puts "Trying to GET #{
|
41
|
-
url = URI.parse(
|
41
|
+
puts "Trying to GET #{request_url}".yellow
|
42
|
+
url = URI.parse(request_url)
|
42
43
|
req = Net::HTTP::Get.new(url.request_uri)
|
43
44
|
if @cookie != ""
|
44
45
|
req['Cookie'] = get_cookie
|
45
46
|
end
|
47
|
+
if @host_url
|
48
|
+
req.add_field("Host", @host_url)
|
49
|
+
end
|
46
50
|
use_ssl = false
|
47
51
|
if url.instance_of? URI::HTTPS
|
48
52
|
use_ssl = true
|
49
53
|
end
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
54
|
+
begin
|
55
|
+
response = Net::HTTP.start(url.host, url.port, use_ssl: use_ssl, verify_mode: OpenSSL::SSL::VERIFY_NONE) { |http| http.request(req) }
|
56
|
+
if response['set-cookie']
|
57
|
+
@cookie = response['set-cookie'].split('; ')[0]
|
58
|
+
response['set-cookie'].split(';').each do |part|
|
59
|
+
if ((part and part.include? "atl.xsrf.token") and (part.match(/atl.xsrf.token=(.*)/)))
|
60
|
+
# parse only the token
|
61
|
+
@atl_token = part.match(/atl.xsrf.token=(.*)/).captures[0]
|
62
|
+
break
|
63
|
+
end
|
58
64
|
end
|
65
|
+
puts "Found new cookie #{get_cookie}".yellow
|
59
66
|
end
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
67
|
+
if response['location']
|
68
|
+
redirection_url = compose_redirection_url(response['location'])
|
69
|
+
puts "Redirected to: #{redirection_url}".yellow
|
70
|
+
else
|
71
|
+
@current_url = url.request_uri
|
72
|
+
puts "Ended in: #{@current_url}".yellow
|
73
|
+
end
|
74
|
+
case response
|
75
|
+
when Net::HTTPSuccess then response.code.to_i
|
76
|
+
when Net::HTTPRedirection then get_stage_and_fetch_cookie(redirection_url, limit - 1)
|
77
|
+
else
|
78
|
+
puts response.body
|
79
|
+
puts response.code.to_s
|
80
|
+
response.code.to_i
|
81
|
+
end
|
82
|
+
rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError, Errno::ECONNREFUSED,
|
83
|
+
Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError => e
|
84
|
+
@current_url = request_url
|
85
|
+
404
|
76
86
|
end
|
77
87
|
end
|
78
88
|
|
79
89
|
def compose_redirection_url(location)
|
90
|
+
|
91
|
+
# in case we do tomcat and the redirection returns http*://host_url/path
|
92
|
+
if @host_url and location.include? @host_url and location.start_with? "http"
|
93
|
+
begin
|
94
|
+
uri = URI::parse(location)
|
95
|
+
location = uri.path
|
96
|
+
rescue Exception => e
|
97
|
+
puts "Can not parse URI from #{location}"
|
98
|
+
end
|
99
|
+
end
|
80
100
|
# in case response['location'] is not full url we need to compose it
|
81
101
|
# if it does contain base_url we assume it is ok
|
82
102
|
if location.include? @url
|
83
|
-
location
|
103
|
+
location
|
104
|
+
# in case redirection contains the startup string, the system has not started yet
|
105
|
+
elsif location.include? "startup.jsp?returnTo="
|
106
|
+
puts "System starting up staying on #{@url}"
|
107
|
+
sleep(10)
|
108
|
+
@url
|
84
109
|
else
|
85
110
|
# in Jira 7.1.7 location is databaseSetup.jspa not secure/databaseSetup.jspa
|
86
111
|
if @url_required_part and !location.include? "/#{@url_required_part}/"
|
@@ -91,6 +116,7 @@ module AvstWizard
|
|
91
116
|
"#{@url}#{location}"
|
92
117
|
end
|
93
118
|
end
|
119
|
+
|
94
120
|
end
|
95
121
|
|
96
122
|
# add atl_token to cookie in case it is present
|
@@ -122,6 +148,9 @@ module AvstWizard
|
|
122
148
|
if url.instance_of? URI::HTTPS
|
123
149
|
use_ssl = true
|
124
150
|
end
|
151
|
+
if @host_url
|
152
|
+
req.add_field("Host", @host_url)
|
153
|
+
end
|
125
154
|
response = Net::HTTP.start(url.host, url.port, use_ssl: use_ssl, verify_mode: OpenSSL::SSL::VERIFY_NONE) { |http| http.request(req) }
|
126
155
|
# TODO: is it possible that this might be a redirect? Can Net::HTTP follow redirects automatically?
|
127
156
|
if response.code.to_i != 200
|
@@ -177,6 +206,9 @@ module AvstWizard
|
|
177
206
|
if uri.instance_of? URI::HTTPS
|
178
207
|
use_ssl = true
|
179
208
|
end
|
209
|
+
if @host_url
|
210
|
+
req.add_field("Host", @host_url)
|
211
|
+
end
|
180
212
|
Net::HTTP.start(uri.hostname, uri.port, use_ssl: use_ssl, verify_mode: OpenSSL::SSL::VERIFY_NONE, :read_timeout => 1000) do |http|
|
181
213
|
response = http.request(req)
|
182
214
|
puts "Response: #{response.inspect}".yellow
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: avst-wizard
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.25
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Martin Brehovsky
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-09-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|