qtc-sdk 0.2.0 → 0.3.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 +4 -4
- data/.gitignore +18 -18
- data/Changelog.md +14 -6
- 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/cli/commands.rb +15 -15
- data/lib/qtc/cli/common.rb +146 -91
- 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 -125
- data/lib/qtc/cli/mar/base.rb +60 -60
- data/lib/qtc/cli/mar/commands.rb +221 -199
- data/lib/qtc/cli/mar/debug.rb +87 -86
- data/lib/qtc/cli/mar/domains.rb +35 -38
- data/lib/qtc/cli/mar/env.rb +38 -40
- data/lib/qtc/cli/mar/repository.rb +24 -26
- data/lib/qtc/cli/mar/ssl_certificates.rb +40 -42
- data/lib/qtc/cli/mar/stack.rb +29 -0
- data/lib/qtc/cli/mdb/base.rb +47 -43
- data/lib/qtc/cli/mdb/commands.rb +43 -31
- data/lib/qtc/cli/mdb/instances.rb +79 -60
- data/lib/qtc/cli/platform/clouds.rb +33 -15
- data/lib/qtc/cli/platform/commands.rb +132 -65
- data/lib/qtc/cli/platform/datacenters.rb +23 -21
- 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 -0
- 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 -11
- data/lib/qtc/version.rb +3 -3
- data/lib/qtc-sdk.rb +1 -1
- data/qtc-sdk.gemspec +28 -28
- data/spec/unit/qtc/client_spec.rb +147 -147
- metadata +20 -19
- data/lib/qtc/mws/client.rb +0 -89
data/lib/qtc/cli/mar/domains.rb
CHANGED
@@ -1,38 +1,35 @@
|
|
1
|
-
require_relative 'base'
|
2
|
-
|
3
|
-
module Qtc
|
4
|
-
module Cli
|
5
|
-
class Mar::Domains < Mar::Base
|
6
|
-
|
7
|
-
def list(options)
|
8
|
-
instance_id = resolve_instance_id(options)
|
9
|
-
instance_data = instance_info(instance_id)
|
10
|
-
if instance_data
|
11
|
-
|
12
|
-
result
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
instance_data
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
1
|
+
require_relative 'base'
|
2
|
+
|
3
|
+
module Qtc
|
4
|
+
module Cli
|
5
|
+
class Mar::Domains < Mar::Base
|
6
|
+
|
7
|
+
def list(options)
|
8
|
+
instance_id = resolve_instance_id(options)
|
9
|
+
instance_data = instance_info(instance_id)
|
10
|
+
if instance_data
|
11
|
+
result = client.get("/apps/#{instance_id}/domains", nil, {'Authorization' => "Bearer #{current_cloud_token}"})
|
12
|
+
result['results'].each do |r|
|
13
|
+
print color("* #{r['name']}", :bold)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def create(name, options)
|
19
|
+
instance_id = resolve_instance_id(options)
|
20
|
+
instance_data = instance_info(instance_id)
|
21
|
+
if instance_data
|
22
|
+
client.post("/apps/#{instance_id}/domains", {name: name}, {}, {'Authorization' => "Bearer #{current_cloud_token}"})
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def destroy(name, options)
|
27
|
+
instance_id = resolve_instance_id(options)
|
28
|
+
instance_data = instance_info(instance_id)
|
29
|
+
if instance_data
|
30
|
+
client.delete("/apps/#{instance_id}/domains/#{name}", nil, {}, {'Authorization' => "Bearer #{current_cloud_token}"})
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/lib/qtc/cli/mar/env.rb
CHANGED
@@ -1,40 +1,38 @@
|
|
1
|
-
require_relative 'base'
|
2
|
-
|
3
|
-
module Qtc
|
4
|
-
module Cli
|
5
|
-
class Mar::Env < Mar::Base
|
6
|
-
|
7
|
-
def set(vars, options)
|
8
|
-
instance_id = resolve_instance_id(options)
|
9
|
-
env_vars = {}
|
10
|
-
vars.each do |type|
|
11
|
-
arr = type.strip.split('=', 2)
|
12
|
-
if arr[0]
|
13
|
-
if arr[1].nil? || arr[1] == ''
|
14
|
-
env_vars[arr[0]] = nil
|
15
|
-
else
|
16
|
-
env_vars[arr[0]] = arr[1]
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
instance_data = instance_info(instance_id)
|
21
|
-
if instance_data
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
instance_data
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
end
|
40
|
-
end
|
1
|
+
require_relative 'base'
|
2
|
+
|
3
|
+
module Qtc
|
4
|
+
module Cli
|
5
|
+
class Mar::Env < Mar::Base
|
6
|
+
|
7
|
+
def set(vars, options)
|
8
|
+
instance_id = resolve_instance_id(options)
|
9
|
+
env_vars = {}
|
10
|
+
vars.each do |type|
|
11
|
+
arr = type.strip.split('=', 2)
|
12
|
+
if arr[0]
|
13
|
+
if arr[1].nil? || arr[1] == ''
|
14
|
+
env_vars[arr[0]] = nil
|
15
|
+
else
|
16
|
+
env_vars[arr[0]] = arr[1]
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
instance_data = instance_info(instance_id)
|
21
|
+
if instance_data
|
22
|
+
client.put("/apps/#{instance_id}/env_vars", env_vars, {}, {'Authorization' => "Bearer #{current_cloud_token}"})
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def show(options)
|
27
|
+
instance_id = resolve_instance_id(options)
|
28
|
+
instance_data = instance_info(instance_id)
|
29
|
+
if instance_data
|
30
|
+
env_vars = client.get("/apps/#{instance_id}/env_vars", {}, {'Authorization' => "Bearer #{current_cloud_token}"})
|
31
|
+
env_vars.each do |key, value|
|
32
|
+
puts "#{key}=#{value}"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -1,26 +1,24 @@
|
|
1
|
-
require_relative 'base'
|
2
|
-
|
3
|
-
module Qtc
|
4
|
-
module Cli
|
5
|
-
class Mar::Repository < Mar::Base
|
6
|
-
|
7
|
-
def purge_cache(options)
|
8
|
-
instance_id = resolve_instance_id(options)
|
9
|
-
instance_data = instance_info(instance_id)
|
10
|
-
if instance_data
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
instance_data
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
end
|
26
|
-
end
|
1
|
+
require_relative 'base'
|
2
|
+
|
3
|
+
module Qtc
|
4
|
+
module Cli
|
5
|
+
class Mar::Repository < Mar::Base
|
6
|
+
|
7
|
+
def purge_cache(options)
|
8
|
+
instance_id = resolve_instance_id(options)
|
9
|
+
instance_data = instance_info(instance_id)
|
10
|
+
if instance_data
|
11
|
+
client.delete("/apps/#{instance_id}/build_cache", nil, {}, {'Authorization' => "Bearer #{current_cloud_token}"})
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def reset(options)
|
16
|
+
instance_id = resolve_instance_id(options)
|
17
|
+
instance_data = instance_info(instance_id)
|
18
|
+
if instance_data
|
19
|
+
client.delete("/apps/#{instance_id}/repository", nil, {}, {'Authorization' => "Bearer #{current_cloud_token}"})
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -1,42 +1,40 @@
|
|
1
|
-
require 'base64'
|
2
|
-
require_relative 'base'
|
3
|
-
|
4
|
-
module Qtc
|
5
|
-
module Cli
|
6
|
-
class Mar::SslCertificates < Mar::Base
|
7
|
-
|
8
|
-
|
9
|
-
def create(options)
|
10
|
-
raise ArgumentError.new("--key=#{options.key} is not a file") unless File.exists?(File.expand_path(options.key))
|
11
|
-
raise ArgumentError.new("--cert=#{options.cert} is not a file") unless File.exists?(File.expand_path(options.cert))
|
12
|
-
unless options.chain.nil?
|
13
|
-
raise ArgumentError.new("--chain=#{options.chain} is not a file") unless File.exists?(File.expand_path(options.chain))
|
14
|
-
end
|
15
|
-
|
16
|
-
instance_id = resolve_instance_id(options)
|
17
|
-
instance_data = instance_info(instance_id)
|
18
|
-
if instance_data
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
instance_data
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
end
|
42
|
-
end
|
1
|
+
require 'base64'
|
2
|
+
require_relative 'base'
|
3
|
+
|
4
|
+
module Qtc
|
5
|
+
module Cli
|
6
|
+
class Mar::SslCertificates < Mar::Base
|
7
|
+
|
8
|
+
|
9
|
+
def create(options)
|
10
|
+
raise ArgumentError.new("--key=#{options.key} is not a file") unless File.exists?(File.expand_path(options.key))
|
11
|
+
raise ArgumentError.new("--cert=#{options.cert} is not a file") unless File.exists?(File.expand_path(options.cert))
|
12
|
+
unless options.chain.nil?
|
13
|
+
raise ArgumentError.new("--chain=#{options.chain} is not a file") unless File.exists?(File.expand_path(options.chain))
|
14
|
+
end
|
15
|
+
|
16
|
+
instance_id = resolve_instance_id(options)
|
17
|
+
instance_data = instance_info(instance_id)
|
18
|
+
if instance_data
|
19
|
+
data = {
|
20
|
+
name: instance_id,
|
21
|
+
privateKey: File.read(File.expand_path(options.key)),
|
22
|
+
certificateBody: File.read(File.expand_path(options.cert))
|
23
|
+
}
|
24
|
+
unless options.chain.nil?
|
25
|
+
data[:certificateChain] = File.read(File.expand_path(options.chain))
|
26
|
+
end
|
27
|
+
client.post("/apps/#{instance_id}/ssl_certificate", data, {}, {'Authorization' => "Bearer #{current_cloud_token}"})
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def destroy(options)
|
32
|
+
instance_id = resolve_instance_id(options)
|
33
|
+
instance_data = instance_info(instance_id)
|
34
|
+
if instance_data
|
35
|
+
client.delete("/apps/#{instance_id}/ssl_certificate", {}, {}, {'Authorization' => "Bearer #{current_cloud_token}"})
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require_relative 'base'
|
2
|
+
|
3
|
+
module Qtc
|
4
|
+
module Cli
|
5
|
+
class Mar::Stack < Mar::Base
|
6
|
+
|
7
|
+
def update(name, options)
|
8
|
+
instance_id = resolve_instance_id(options)
|
9
|
+
instance_data = instance_info(instance_id)
|
10
|
+
if instance_data
|
11
|
+
client.put("/apps/#{instance_id}", {stack: name}, nil, {'Authorization' => "Bearer #{current_cloud_token}"})
|
12
|
+
puts "Stack is now set to: #{name}"
|
13
|
+
puts "Next release on #{instance_data['name']} will use #{name} stack."
|
14
|
+
puts "Use `git push <remote> master` to create new release on #{name}"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def show(options)
|
19
|
+
instance_id = resolve_instance_id(options)
|
20
|
+
instance_data = instance_info(instance_id)
|
21
|
+
if instance_data
|
22
|
+
env_vars = client.get("/apps/#{instance_id}/env_vars", {}, {'Authorization' => "Bearer #{current_cloud_token}"})
|
23
|
+
puts "App is using stack: #{env_vars['STACK']}"
|
24
|
+
puts ""
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/lib/qtc/cli/mdb/base.rb
CHANGED
@@ -1,43 +1,47 @@
|
|
1
|
-
require_relative '../../client'
|
2
|
-
require_relative '../common'
|
3
|
-
|
4
|
-
module Qtc
|
5
|
-
module Cli
|
6
|
-
module Mdb
|
7
|
-
class Base
|
8
|
-
include Cli::Common
|
9
|
-
|
10
|
-
protected
|
11
|
-
|
12
|
-
##
|
13
|
-
# @param [String] instance_id
|
14
|
-
# @return [String,NilClass]
|
15
|
-
def resolve_datacenter_id(instance_id)
|
16
|
-
match = instance_id.to_s.match(/^(mdb-\w+-\w+)-\w+/)
|
17
|
-
if match[1]
|
18
|
-
match[1]
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
@client
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
end
|
1
|
+
require_relative '../../client'
|
2
|
+
require_relative '../common'
|
3
|
+
|
4
|
+
module Qtc
|
5
|
+
module Cli
|
6
|
+
module Mdb
|
7
|
+
class Base
|
8
|
+
include Cli::Common
|
9
|
+
|
10
|
+
protected
|
11
|
+
|
12
|
+
##
|
13
|
+
# @param [String] instance_id
|
14
|
+
# @return [String,NilClass]
|
15
|
+
def resolve_datacenter_id(instance_id)
|
16
|
+
match = instance_id.to_s.match(/^(mdb-\w+-\w+)-\w+/)
|
17
|
+
if match[1]
|
18
|
+
match[1]
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def mdb_datacenter_id
|
23
|
+
"mdb-#{current_cloud_dc}"
|
24
|
+
end
|
25
|
+
|
26
|
+
##
|
27
|
+
# @return [Qtc::Client]
|
28
|
+
def client
|
29
|
+
if @client.nil?
|
30
|
+
@client = Qtc::Client.new(base_url)
|
31
|
+
end
|
32
|
+
|
33
|
+
@client
|
34
|
+
end
|
35
|
+
|
36
|
+
def base_url
|
37
|
+
datacenters = inifile['datacenters'] || {}
|
38
|
+
if !self.datacenter_id.nil? && datacenters.has_key?(self.datacenter_id)
|
39
|
+
"#{datacenters[self.datacenter_id]}/v1"
|
40
|
+
else
|
41
|
+
raise ArgumentError.new('Unknown datacenter. Please run qtc-cli datacenters to get latest list of your datacenters')
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
data/lib/qtc/cli/mdb/commands.rb
CHANGED
@@ -1,31 +1,43 @@
|
|
1
|
-
require_relative 'instances'
|
2
|
-
|
3
|
-
command 'mdb list' do |c|
|
4
|
-
c.syntax = 'qtc-cli mdb list'
|
5
|
-
c.description = 'List all MDB instances'
|
6
|
-
c.action do |args, options|
|
7
|
-
Qtc::Cli::Mdb::Instances.new.list
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
command 'mdb show' do |c|
|
12
|
-
c.syntax = 'qtc-cli mdb show'
|
13
|
-
c.description = 'Show MDB instance info'
|
14
|
-
c.option '--id ID', String, 'MDB instance id'
|
15
|
-
c.action do |args, options|
|
16
|
-
Qtc::Cli::Mdb::Instances.new.show(options)
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
command 'mdb
|
21
|
-
c.syntax = 'qtc-cli mdb
|
22
|
-
c.description = '
|
23
|
-
c.option '--
|
24
|
-
c.option '--
|
25
|
-
c.
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
1
|
+
require_relative 'instances'
|
2
|
+
|
3
|
+
command 'mdb list' do |c|
|
4
|
+
c.syntax = 'qtc-cli mdb list'
|
5
|
+
c.description = 'List all MDB instances'
|
6
|
+
c.action do |args, options|
|
7
|
+
Qtc::Cli::Mdb::Instances.new.list
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
command 'mdb show' do |c|
|
12
|
+
c.syntax = 'qtc-cli mdb show'
|
13
|
+
c.description = 'Show MDB instance info'
|
14
|
+
c.option '--id ID', String, 'MDB instance id'
|
15
|
+
c.action do |args, options|
|
16
|
+
Qtc::Cli::Mdb::Instances.new.show(options)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
command 'mdb create' do |c|
|
21
|
+
c.syntax = 'qtc-cli mdb create NAME'
|
22
|
+
c.description = 'Create a new MDB instance'
|
23
|
+
c.option '--type TYPE', String, 'MDB type'
|
24
|
+
c.option '--size SIZE', String, 'MDB size'
|
25
|
+
c.action do |args, options|
|
26
|
+
raise ArgumentError.new('NAME is required') if args[0].nil?
|
27
|
+
raise ArgumentError.new('--type is required (example: mysql:5.6)') if options.type.nil?
|
28
|
+
Qtc::Cli::Mdb::Instances.new.create(args[0], options)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
command 'mdb logs' do |c|
|
33
|
+
c.syntax = 'qtc-cli mdb logs'
|
34
|
+
c.description = 'Show MDB logs'
|
35
|
+
c.option '--id ID', String, 'MDB instance id'
|
36
|
+
c.option '--timestamp', String, 'Include timestamp'
|
37
|
+
c.option '--stream', String, 'stdout or stderr'
|
38
|
+
c.option '--limit LIMIT', Integer, 'Limit'
|
39
|
+
c.option '--offset OFFSET', Integer, 'Offset'
|
40
|
+
c.action do |args, options|
|
41
|
+
Qtc::Cli::Mdb::Instances.new.logs(options)
|
42
|
+
end
|
43
|
+
end
|
@@ -1,60 +1,79 @@
|
|
1
|
-
require_relative 'base'
|
2
|
-
|
3
|
-
module Qtc
|
4
|
-
module Cli
|
5
|
-
class Mdb::Instances < Mdb::Base
|
6
|
-
include Qtc::Cli::Common
|
7
|
-
|
8
|
-
def list
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
puts "
|
30
|
-
puts "
|
31
|
-
puts "
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
1
|
+
require_relative 'base'
|
2
|
+
|
3
|
+
module Qtc
|
4
|
+
module Cli
|
5
|
+
class Mdb::Instances < Mdb::Base
|
6
|
+
include Qtc::Cli::Common
|
7
|
+
|
8
|
+
def list
|
9
|
+
instances = platform_client(current_cloud_token).get("/accounts/#{current_cloud_id}/instances", {provider: 'mdb'})
|
10
|
+
template = "%-20.20s %-30.30s %-20.20s"
|
11
|
+
puts template % ["ID", "NAME", "TAGS"]
|
12
|
+
instances['results'].each do |instance|
|
13
|
+
puts template % [instance['id'], instance['name'], instance['tags'].join(',')]
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def show(options)
|
18
|
+
raise ArgumentError.new('--id is required') if options.id.nil?
|
19
|
+
|
20
|
+
self.datacenter_id = self.resolve_datacenter_id(options.id)
|
21
|
+
instance_id = options.id
|
22
|
+
instance_data = instance_info(instance_id)
|
23
|
+
if instance_data
|
24
|
+
result = client.get("/services/#{instance_id}", nil, {'Authorization' => "Bearer #{current_cloud_token}"})
|
25
|
+
puts "Id: #{result['id']}"
|
26
|
+
puts "Name: #{result['name']}"
|
27
|
+
puts "Type: #{result['image']['name']}"
|
28
|
+
puts "Size: #{result['size'].to_i * 256}MB"
|
29
|
+
puts "State: #{result['state']}"
|
30
|
+
puts "Ip address: #{result['ip_address']}"
|
31
|
+
puts "Port: #{result['port']}"
|
32
|
+
if result['username']
|
33
|
+
puts "Username: #{result['username']}"
|
34
|
+
end
|
35
|
+
if result['password']
|
36
|
+
puts "Password: #{result['password']}"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def create(name, options)
|
42
|
+
sizes = {'256m' => 1, '512m' => 2, '768m' => 3, '1024m' => 4}
|
43
|
+
size = sizes[options.size.to_s.to_sym] || 1
|
44
|
+
data = {
|
45
|
+
name: name,
|
46
|
+
serviceProviderId: 'mdb',
|
47
|
+
config: {
|
48
|
+
runtimeSize: size,
|
49
|
+
serviceImage: "qtcs/#{options.type}"
|
50
|
+
}
|
51
|
+
}
|
52
|
+
response = platform_client.post("/accounts/#{current_cloud_id}/instances", data)
|
53
|
+
puts response['id']
|
54
|
+
end
|
55
|
+
|
56
|
+
def logs(options)
|
57
|
+
raise ArgumentError.new('--id is required') if options.id.nil?
|
58
|
+
|
59
|
+
self.datacenter_id = self.resolve_datacenter_id(options.id)
|
60
|
+
offset = options.offset || 0
|
61
|
+
limit = options.limit || 100
|
62
|
+
stream = options.stream || nil
|
63
|
+
|
64
|
+
instance_id = options.id
|
65
|
+
instance_data = instance_info(instance_id)
|
66
|
+
if instance_data
|
67
|
+
result = client.get("/services/#{instance_id}/logs", {offset: offset, limit: limit}, {'Authorization' => "Bearer #{current_cloud_token}"})
|
68
|
+
result['results'].each do |r|
|
69
|
+
line = ''
|
70
|
+
line << "[#{r['time']}] " if options.timestamp == true
|
71
|
+
line << r['log']
|
72
|
+
puts line
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|