qtc-sdk 0.3.1 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +18 -18
- data/Changelog.md +23 -18
- data/Gemfile +4 -4
- data/LICENSE.txt +22 -22
- data/README.md +44 -44
- data/Rakefile +1 -1
- data/bin/qtc-cli +13 -13
- data/lib/qtc-sdk.rb +1 -1
- data/lib/qtc/cli/commands.rb +15 -15
- data/lib/qtc/cli/common.rb +146 -146
- data/lib/qtc/cli/eds/base.rb +27 -27
- data/lib/qtc/cli/eds/commands.rb +20 -20
- data/lib/qtc/cli/eds/instances.rb +30 -30
- data/lib/qtc/cli/mar/apps.rb +116 -116
- data/lib/qtc/cli/mar/base.rb +60 -60
- data/lib/qtc/cli/mar/commands.rb +266 -221
- data/lib/qtc/cli/mar/debug.rb +88 -88
- data/lib/qtc/cli/mar/domains.rb +35 -35
- data/lib/qtc/cli/mar/env.rb +38 -38
- data/lib/qtc/cli/mar/repository.rb +24 -24
- data/lib/qtc/cli/mar/slugs.rb +80 -0
- data/lib/qtc/cli/mar/ssl_certificates.rb +40 -40
- data/lib/qtc/cli/mar/stack.rb +29 -29
- data/lib/qtc/cli/mdb/base.rb +47 -47
- data/lib/qtc/cli/mdb/commands.rb +43 -43
- data/lib/qtc/cli/mdb/instances.rb +79 -79
- data/lib/qtc/cli/platform/clouds.rb +33 -33
- data/lib/qtc/cli/platform/commands.rb +132 -132
- data/lib/qtc/cli/platform/datacenters.rb +23 -23
- data/lib/qtc/cli/platform/ssh_keys.rb +41 -41
- data/lib/qtc/cli/platform/user.rb +25 -25
- data/lib/qtc/cli/platform/vpn.rb +93 -93
- data/lib/qtc/client.rb +170 -170
- data/lib/qtc/eds/client.rb +116 -116
- data/lib/qtc/eds/collection.rb +124 -124
- data/lib/qtc/eds/user_collection.rb +13 -13
- data/lib/qtc/eds/usergroup_collection.rb +41 -41
- data/lib/qtc/errors.rb +13 -13
- data/lib/qtc/version.rb +3 -3
- data/qtc-sdk.gemspec +28 -28
- data/spec/unit/qtc/client_spec.rb +147 -147
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aa7296e5b88e68be2cc7c2cb7182f84f08ab028c
|
4
|
+
data.tar.gz: 2e9f1fa63c4225572894ecb089a401235f4ba100
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ed984ff2fb473f1c571799eda81ad09b1a9b1c4774f17ee7701ef02080e138e4d48b42b227d7b0679a59b5f1706ce454675eb783ab04ce69ecbed346ce20b173
|
7
|
+
data.tar.gz: 9d32a47dbb36687a96e605df9a2ed3fb5e3ea8a6b1b9f7ed1b77d835ae3e37ab4550ff19ee180a7d235649af35acf779fe65ac505cddf60c326a2e33af63aab0
|
data/.gitignore
CHANGED
@@ -1,18 +1,18 @@
|
|
1
|
-
*.gem
|
2
|
-
*.rbc
|
3
|
-
.bundle
|
4
|
-
.config
|
5
|
-
.yardoc
|
6
|
-
.idea
|
7
|
-
Gemfile.lock
|
8
|
-
InstalledFiles
|
9
|
-
_yardoc
|
10
|
-
coverage
|
11
|
-
doc/
|
12
|
-
lib/bundler/man
|
13
|
-
pkg
|
14
|
-
rdoc
|
15
|
-
spec/reports
|
16
|
-
test/tmp
|
17
|
-
test/version_tmp
|
18
|
-
tmp
|
1
|
+
*.gem
|
2
|
+
*.rbc
|
3
|
+
.bundle
|
4
|
+
.config
|
5
|
+
.yardoc
|
6
|
+
.idea
|
7
|
+
Gemfile.lock
|
8
|
+
InstalledFiles
|
9
|
+
_yardoc
|
10
|
+
coverage
|
11
|
+
doc/
|
12
|
+
lib/bundler/man
|
13
|
+
pkg
|
14
|
+
rdoc
|
15
|
+
spec/reports
|
16
|
+
test/tmp
|
17
|
+
test/version_tmp
|
18
|
+
tmp
|
data/Changelog.md
CHANGED
@@ -1,18 +1,23 @@
|
|
1
|
-
0.
|
2
|
-
-----------
|
3
|
-
-
|
4
|
-
|
5
|
-
0.3.
|
6
|
-
-----------
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
-
|
17
|
-
|
18
|
-
|
1
|
+
0.4.0
|
2
|
+
-----------
|
3
|
+
- Add support for slug upload & deploy functionality: qtc-cli mar slug:upload ...; qtc-cli mar slug:deploy v1.2
|
4
|
+
|
5
|
+
0.3.1
|
6
|
+
-----------
|
7
|
+
- Fix mar local:build_slug
|
8
|
+
|
9
|
+
|
10
|
+
0.3.0
|
11
|
+
-----------
|
12
|
+
|
13
|
+
- Add support for cloud vpn
|
14
|
+
- Add support for stack change
|
15
|
+
- Refactor cli to use cloud tokens
|
16
|
+
- Remove MWS support
|
17
|
+
|
18
|
+
0.2.0
|
19
|
+
-----------
|
20
|
+
|
21
|
+
- Add support for executing ad-hoc commands inside MAR applications: qtc-cli mar exec
|
22
|
+
- Add support for local debugging of MAR applications (using docker): qtc-cli mar local:run
|
23
|
+
- Add initial MDB commands: qtc-cli mdb list/logs
|
data/Gemfile
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
source 'https://rubygems.org'
|
2
|
-
|
3
|
-
# Specify your gem's dependencies in qtc-sdk.gemspec
|
4
|
-
gemspec
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
|
3
|
+
# Specify your gem's dependencies in qtc-sdk.gemspec
|
4
|
+
gemspec
|
data/LICENSE.txt
CHANGED
@@ -1,22 +1,22 @@
|
|
1
|
-
Copyright (c) 2014 Jari Kolehmainen
|
2
|
-
|
3
|
-
MIT License
|
4
|
-
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
-
a copy of this software and associated documentation files (the
|
7
|
-
"Software"), to deal in the Software without restriction, including
|
8
|
-
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
-
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
-
permit persons to whom the Software is furnished to do so, subject to
|
11
|
-
the following conditions:
|
12
|
-
|
13
|
-
The above copyright notice and this permission notice shall be
|
14
|
-
included in all copies or substantial portions of the Software.
|
15
|
-
|
16
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
-
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
-
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
-
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
-
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
1
|
+
Copyright (c) 2014 Jari Kolehmainen
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
CHANGED
@@ -1,44 +1,44 @@
|
|
1
|
-
# Qt Cloud Services SDK for Ruby
|
2
|
-
|
3
|
-
This is Qt Cloud Services SDK for Ruby. What is Qt Cloud Services? See below:
|
4
|
-
|
5
|
-
* The Qt Cloud Services home page is at https://www.qtc.io
|
6
|
-
* The Developer Documentation page is at https://developer.qtc.io
|
7
|
-
|
8
|
-
## Getting Started
|
9
|
-
|
10
|
-
You can find a getting started guide for Qt Cloud Services at:
|
11
|
-
|
12
|
-
http://developer.qtc.io/qtc/getting-started?snippets=ruby
|
13
|
-
|
14
|
-
If you are looking for service specific guides, please see:
|
15
|
-
|
16
|
-
* [Enginio Data Storage](http://developer.qtc.io/eds/getting-started?snippets=ruby)
|
17
|
-
* [Managed Application Runtime](http://developer.qtc.io/mar/getting-started?snippets=ruby)
|
18
|
-
|
19
|
-
|
20
|
-
## Installation
|
21
|
-
|
22
|
-
Add this line to your application's Gemfile:
|
23
|
-
|
24
|
-
gem 'qtc-sdk'
|
25
|
-
|
26
|
-
And then execute:
|
27
|
-
|
28
|
-
$ bundle
|
29
|
-
|
30
|
-
Or install it yourself as:
|
31
|
-
|
32
|
-
$ gem install qtc-sdk
|
33
|
-
|
34
|
-
## Usage
|
35
|
-
|
36
|
-
TODO: Write usage instructions here
|
37
|
-
|
38
|
-
## Contributing
|
39
|
-
|
40
|
-
1. Fork it ( http://github.com/qtcloudservices/qtc-sdk-ruby/fork )
|
41
|
-
2. Create your feature branch (`git checkout -b my-new-feature`)
|
42
|
-
3. Commit your changes (`git commit -am 'Add some feature'`)
|
43
|
-
4. Push to the branch (`git push origin my-new-feature`)
|
44
|
-
5. Create new Pull Request
|
1
|
+
# Qt Cloud Services SDK for Ruby
|
2
|
+
|
3
|
+
This is Qt Cloud Services SDK for Ruby. What is Qt Cloud Services? See below:
|
4
|
+
|
5
|
+
* The Qt Cloud Services home page is at https://www.qtc.io
|
6
|
+
* The Developer Documentation page is at https://developer.qtc.io
|
7
|
+
|
8
|
+
## Getting Started
|
9
|
+
|
10
|
+
You can find a getting started guide for Qt Cloud Services at:
|
11
|
+
|
12
|
+
http://developer.qtc.io/qtc/getting-started?snippets=ruby
|
13
|
+
|
14
|
+
If you are looking for service specific guides, please see:
|
15
|
+
|
16
|
+
* [Enginio Data Storage](http://developer.qtc.io/eds/getting-started?snippets=ruby)
|
17
|
+
* [Managed Application Runtime](http://developer.qtc.io/mar/getting-started?snippets=ruby)
|
18
|
+
|
19
|
+
|
20
|
+
## Installation
|
21
|
+
|
22
|
+
Add this line to your application's Gemfile:
|
23
|
+
|
24
|
+
gem 'qtc-sdk'
|
25
|
+
|
26
|
+
And then execute:
|
27
|
+
|
28
|
+
$ bundle
|
29
|
+
|
30
|
+
Or install it yourself as:
|
31
|
+
|
32
|
+
$ gem install qtc-sdk
|
33
|
+
|
34
|
+
## Usage
|
35
|
+
|
36
|
+
TODO: Write usage instructions here
|
37
|
+
|
38
|
+
## Contributing
|
39
|
+
|
40
|
+
1. Fork it ( http://github.com/qtcloudservices/qtc-sdk-ruby/fork )
|
41
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
42
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
43
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
44
|
+
5. Create new Pull Request
|
data/Rakefile
CHANGED
@@ -1 +1 @@
|
|
1
|
-
require "bundler/gem_tasks"
|
1
|
+
require "bundler/gem_tasks"
|
data/bin/qtc-cli
CHANGED
@@ -1,14 +1,14 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# encoding: UTF-8
|
3
|
-
|
4
|
-
# resolve bin path, ignoring symlinks
|
5
|
-
require 'pathname'
|
6
|
-
bin_file = Pathname.new(__FILE__).realpath
|
7
|
-
|
8
|
-
# add self to libpath
|
9
|
-
$:.unshift File.expand_path('../../lib', bin_file)
|
10
|
-
|
11
|
-
STDOUT.sync = true
|
12
|
-
|
13
|
-
require 'commander/import'
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: UTF-8
|
3
|
+
|
4
|
+
# resolve bin path, ignoring symlinks
|
5
|
+
require 'pathname'
|
6
|
+
bin_file = Pathname.new(__FILE__).realpath
|
7
|
+
|
8
|
+
# add self to libpath
|
9
|
+
$:.unshift File.expand_path('../../lib', bin_file)
|
10
|
+
|
11
|
+
STDOUT.sync = true
|
12
|
+
|
13
|
+
require 'commander/import'
|
14
14
|
require 'qtc/cli/commands'
|
data/lib/qtc-sdk.rb
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
require 'qtc/client'
|
1
|
+
require 'qtc/client'
|
2
2
|
require 'qtc/eds/client'
|
data/lib/qtc/cli/commands.rb
CHANGED
@@ -1,15 +1,15 @@
|
|
1
|
-
require 'qtc/version'
|
2
|
-
|
3
|
-
module Qtc::Cli; end;
|
4
|
-
|
5
|
-
program :name, 'qtc-cli'
|
6
|
-
program :version, Qtc::VERSION
|
7
|
-
program :description, 'Command line interface for Qt Cloud Services'
|
8
|
-
|
9
|
-
default_command :help
|
10
|
-
never_trace!
|
11
|
-
|
12
|
-
require_relative 'platform/commands'
|
13
|
-
require_relative 'eds/commands'
|
14
|
-
require_relative 'mar/commands'
|
15
|
-
require_relative 'mdb/commands'
|
1
|
+
require 'qtc/version'
|
2
|
+
|
3
|
+
module Qtc::Cli; end;
|
4
|
+
|
5
|
+
program :name, 'qtc-cli'
|
6
|
+
program :version, Qtc::VERSION
|
7
|
+
program :description, 'Command line interface for Qt Cloud Services'
|
8
|
+
|
9
|
+
default_command :help
|
10
|
+
never_trace!
|
11
|
+
|
12
|
+
require_relative 'platform/commands'
|
13
|
+
require_relative 'eds/commands'
|
14
|
+
require_relative 'mar/commands'
|
15
|
+
require_relative 'mdb/commands'
|
data/lib/qtc/cli/common.rb
CHANGED
@@ -1,146 +1,146 @@
|
|
1
|
-
require 'inifile'
|
2
|
-
module Qtc
|
3
|
-
module Cli
|
4
|
-
module Common
|
5
|
-
|
6
|
-
attr_accessor :datacenter_id
|
7
|
-
|
8
|
-
##
|
9
|
-
# @param [String] instance_id
|
10
|
-
def instance_info(instance_id)
|
11
|
-
instance_data = platform_client.get("/instances/#{instance_id}")
|
12
|
-
unless instance_data
|
13
|
-
abort("Error: instance not found")
|
14
|
-
end
|
15
|
-
|
16
|
-
instance_data
|
17
|
-
end
|
18
|
-
|
19
|
-
##
|
20
|
-
# @return [String]
|
21
|
-
def current_cloud_id
|
22
|
-
unless @current_cloud_id
|
23
|
-
unless inifile['platform']['current_cloud']
|
24
|
-
raise ArgumentError.new("Please specify used cloud first: qtc-cli clouds:use <id>")
|
25
|
-
end
|
26
|
-
@current_cloud_id = inifile['platform']['current_cloud']
|
27
|
-
self.datacenter_id = inifile['platform']['current_dc']
|
28
|
-
end
|
29
|
-
@current_cloud_id
|
30
|
-
end
|
31
|
-
|
32
|
-
##
|
33
|
-
# @return [String]
|
34
|
-
def current_cloud_dc
|
35
|
-
unless @current_cloud_dc
|
36
|
-
unless inifile['platform']['current_cloud']
|
37
|
-
raise ArgumentError.new("Please specify used cloud first: qtc-cli clouds:use <id>")
|
38
|
-
end
|
39
|
-
@current_cloud_dc = inifile['platform']['current_dc']
|
40
|
-
end
|
41
|
-
@current_cloud_dc
|
42
|
-
end
|
43
|
-
|
44
|
-
##
|
45
|
-
# @return [String]
|
46
|
-
def current_cloud_token
|
47
|
-
token = nil
|
48
|
-
begin
|
49
|
-
authorizations = platform_client.get("/accounts/#{current_cloud_id}/authorizations")
|
50
|
-
unless authorizations['results'][0]
|
51
|
-
platform_client.post("/accounts/#{current_cloud_id}/authorizations", {})
|
52
|
-
raise StandardError.new "retry"
|
53
|
-
end
|
54
|
-
token = authorizations['results'][0]['access_token']
|
55
|
-
rescue ArgumentError => e
|
56
|
-
raise e
|
57
|
-
rescue Qtc::Errors::StandardError => e
|
58
|
-
if e.status == 404
|
59
|
-
raise ArgumentError.new("Cloud not found. Please specify used cloud first: qtc-cli clouds:use <id>")
|
60
|
-
end
|
61
|
-
rescue => e
|
62
|
-
retry
|
63
|
-
end
|
64
|
-
|
65
|
-
token
|
66
|
-
end
|
67
|
-
|
68
|
-
##
|
69
|
-
# @param [String] token
|
70
|
-
# @return [Qtc::Client]
|
71
|
-
def platform_client(token = nil)
|
72
|
-
inifile['platform']['token'] = token unless token.nil?
|
73
|
-
unless inifile['platform']['token']
|
74
|
-
raise ArgumentError.new("Please login first using: qtc-cli login")
|
75
|
-
end
|
76
|
-
|
77
|
-
if @platform_client.nil?
|
78
|
-
@platform_client = Qtc::Client.new(platform_base_url, {'Authorization' => "Bearer #{inifile['platform']['token']}"})
|
79
|
-
end
|
80
|
-
|
81
|
-
@platform_client
|
82
|
-
end
|
83
|
-
|
84
|
-
##
|
85
|
-
# @return [String]
|
86
|
-
def ini_filename
|
87
|
-
File.join(Dir.home, '/.qtc_client')
|
88
|
-
end
|
89
|
-
|
90
|
-
##
|
91
|
-
# @return [Hash]
|
92
|
-
def inifile
|
93
|
-
if @inifile.nil?
|
94
|
-
if File.exists?(ini_filename)
|
95
|
-
@inifile = IniFile.load(ini_filename)
|
96
|
-
else
|
97
|
-
@inifile = IniFile.new
|
98
|
-
end
|
99
|
-
end
|
100
|
-
|
101
|
-
unless @inifile['platform']
|
102
|
-
@inifile['platform'] = {}
|
103
|
-
end
|
104
|
-
|
105
|
-
@inifile
|
106
|
-
end
|
107
|
-
|
108
|
-
##
|
109
|
-
# @param [String,NilClass]
|
110
|
-
# @return [String]
|
111
|
-
def extract_app_in_dir(remote = nil)
|
112
|
-
if File.exists?(File.expand_path('./.git/config'))
|
113
|
-
remotes = []
|
114
|
-
git_remotes = `git remote -v`
|
115
|
-
git_remotes.lines.each do |line|
|
116
|
-
if match = line.match(/#{remote}\s+git@git-mar-(.*)\:(.*) \(push\)/)
|
117
|
-
remotes << match[2]
|
118
|
-
end
|
119
|
-
end
|
120
|
-
apps = remotes.uniq
|
121
|
-
if apps.size == 1
|
122
|
-
return apps[0]
|
123
|
-
elsif apps.size > 1
|
124
|
-
raise ArgumentError.new("Multiple app git remotes\nSpecify app with --remote REMOTE or --app APP")
|
125
|
-
end
|
126
|
-
end
|
127
|
-
end
|
128
|
-
|
129
|
-
##
|
130
|
-
# @return [Qtc::Client]
|
131
|
-
def client
|
132
|
-
if @client.nil?
|
133
|
-
@client = Qtc::Client.new(base_url)
|
134
|
-
end
|
135
|
-
|
136
|
-
@client
|
137
|
-
end
|
138
|
-
|
139
|
-
##
|
140
|
-
# @return [String]
|
141
|
-
def platform_base_url
|
142
|
-
ENV['QTC_PLATFORM_URL'] || 'https://api.qtc.io/v1'
|
143
|
-
end
|
144
|
-
end
|
145
|
-
end
|
146
|
-
end
|
1
|
+
require 'inifile'
|
2
|
+
module Qtc
|
3
|
+
module Cli
|
4
|
+
module Common
|
5
|
+
|
6
|
+
attr_accessor :datacenter_id
|
7
|
+
|
8
|
+
##
|
9
|
+
# @param [String] instance_id
|
10
|
+
def instance_info(instance_id)
|
11
|
+
instance_data = platform_client.get("/instances/#{instance_id}")
|
12
|
+
unless instance_data
|
13
|
+
abort("Error: instance not found")
|
14
|
+
end
|
15
|
+
|
16
|
+
instance_data
|
17
|
+
end
|
18
|
+
|
19
|
+
##
|
20
|
+
# @return [String]
|
21
|
+
def current_cloud_id
|
22
|
+
unless @current_cloud_id
|
23
|
+
unless inifile['platform']['current_cloud']
|
24
|
+
raise ArgumentError.new("Please specify used cloud first: qtc-cli clouds:use <id>")
|
25
|
+
end
|
26
|
+
@current_cloud_id = inifile['platform']['current_cloud']
|
27
|
+
self.datacenter_id = inifile['platform']['current_dc']
|
28
|
+
end
|
29
|
+
@current_cloud_id
|
30
|
+
end
|
31
|
+
|
32
|
+
##
|
33
|
+
# @return [String]
|
34
|
+
def current_cloud_dc
|
35
|
+
unless @current_cloud_dc
|
36
|
+
unless inifile['platform']['current_cloud']
|
37
|
+
raise ArgumentError.new("Please specify used cloud first: qtc-cli clouds:use <id>")
|
38
|
+
end
|
39
|
+
@current_cloud_dc = inifile['platform']['current_dc']
|
40
|
+
end
|
41
|
+
@current_cloud_dc
|
42
|
+
end
|
43
|
+
|
44
|
+
##
|
45
|
+
# @return [String]
|
46
|
+
def current_cloud_token
|
47
|
+
token = nil
|
48
|
+
begin
|
49
|
+
authorizations = platform_client.get("/accounts/#{current_cloud_id}/authorizations")
|
50
|
+
unless authorizations['results'][0]
|
51
|
+
platform_client.post("/accounts/#{current_cloud_id}/authorizations", {})
|
52
|
+
raise StandardError.new "retry"
|
53
|
+
end
|
54
|
+
token = authorizations['results'][0]['access_token']
|
55
|
+
rescue ArgumentError => e
|
56
|
+
raise e
|
57
|
+
rescue Qtc::Errors::StandardError => e
|
58
|
+
if e.status == 404
|
59
|
+
raise ArgumentError.new("Cloud not found. Please specify used cloud first: qtc-cli clouds:use <id>")
|
60
|
+
end
|
61
|
+
rescue => e
|
62
|
+
retry
|
63
|
+
end
|
64
|
+
|
65
|
+
token
|
66
|
+
end
|
67
|
+
|
68
|
+
##
|
69
|
+
# @param [String] token
|
70
|
+
# @return [Qtc::Client]
|
71
|
+
def platform_client(token = nil)
|
72
|
+
inifile['platform']['token'] = token unless token.nil?
|
73
|
+
unless inifile['platform']['token']
|
74
|
+
raise ArgumentError.new("Please login first using: qtc-cli login")
|
75
|
+
end
|
76
|
+
|
77
|
+
if @platform_client.nil?
|
78
|
+
@platform_client = Qtc::Client.new(platform_base_url, {'Authorization' => "Bearer #{inifile['platform']['token']}"})
|
79
|
+
end
|
80
|
+
|
81
|
+
@platform_client
|
82
|
+
end
|
83
|
+
|
84
|
+
##
|
85
|
+
# @return [String]
|
86
|
+
def ini_filename
|
87
|
+
File.join(Dir.home, '/.qtc_client')
|
88
|
+
end
|
89
|
+
|
90
|
+
##
|
91
|
+
# @return [Hash]
|
92
|
+
def inifile
|
93
|
+
if @inifile.nil?
|
94
|
+
if File.exists?(ini_filename)
|
95
|
+
@inifile = IniFile.load(ini_filename)
|
96
|
+
else
|
97
|
+
@inifile = IniFile.new
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
unless @inifile['platform']
|
102
|
+
@inifile['platform'] = {}
|
103
|
+
end
|
104
|
+
|
105
|
+
@inifile
|
106
|
+
end
|
107
|
+
|
108
|
+
##
|
109
|
+
# @param [String,NilClass]
|
110
|
+
# @return [String]
|
111
|
+
def extract_app_in_dir(remote = nil)
|
112
|
+
if File.exists?(File.expand_path('./.git/config'))
|
113
|
+
remotes = []
|
114
|
+
git_remotes = `git remote -v`
|
115
|
+
git_remotes.lines.each do |line|
|
116
|
+
if match = line.match(/#{remote}\s+git@git-mar-(.*)\:(.*) \(push\)/)
|
117
|
+
remotes << match[2]
|
118
|
+
end
|
119
|
+
end
|
120
|
+
apps = remotes.uniq
|
121
|
+
if apps.size == 1
|
122
|
+
return apps[0]
|
123
|
+
elsif apps.size > 1
|
124
|
+
raise ArgumentError.new("Multiple app git remotes\nSpecify app with --remote REMOTE or --app APP")
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
##
|
130
|
+
# @return [Qtc::Client]
|
131
|
+
def client
|
132
|
+
if @client.nil?
|
133
|
+
@client = Qtc::Client.new(base_url)
|
134
|
+
end
|
135
|
+
|
136
|
+
@client
|
137
|
+
end
|
138
|
+
|
139
|
+
##
|
140
|
+
# @return [String]
|
141
|
+
def platform_base_url
|
142
|
+
ENV['QTC_PLATFORM_URL'] || 'https://api.qtc.io/v1'
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|
146
|
+
end
|