smartdc 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +5 -0
- data/Gemfile +16 -0
- data/LICENSE.md +20 -0
- data/README.md +87 -0
- data/VERSION +1 -0
- data/bin/sdc-addmachinemetadata +29 -0
- data/bin/sdc-addmachinetag +29 -0
- data/bin/sdc-createinstrumentation +28 -0
- data/bin/sdc-createkey +33 -0
- data/bin/sdc-createmachine +39 -0
- data/bin/sdc-createmachinesnapshot +28 -0
- data/bin/sdc-deleteinstrumentation +10 -0
- data/bin/sdc-deletekey +10 -0
- data/bin/sdc-deletemachine +10 -0
- data/bin/sdc-deletemachinemetadata +27 -0
- data/bin/sdc-deletemachinesnapshot +28 -0
- data/bin/sdc-deletemachinetag +27 -0
- data/bin/sdc-describeanalytics +11 -0
- data/bin/sdc-getdatacenter +11 -0
- data/bin/sdc-getdataset +11 -0
- data/bin/sdc-getinstrumentation +32 -0
- data/bin/sdc-getkey +11 -0
- data/bin/sdc-getmachine +11 -0
- data/bin/sdc-getmachinemetadata +11 -0
- data/bin/sdc-getmachinesnapshot +28 -0
- data/bin/sdc-getmachinetag +28 -0
- data/bin/sdc-getpackage +11 -0
- data/bin/sdc-listdatacenters +11 -0
- data/bin/sdc-listdatasets +11 -0
- data/bin/sdc-listinstrumentations +11 -0
- data/bin/sdc-listkeys +11 -0
- data/bin/sdc-listmachines +11 -0
- data/bin/sdc-listmachinesnapshots +11 -0
- data/bin/sdc-listmachinetags +11 -0
- data/bin/sdc-listpackages +11 -0
- data/bin/sdc-rebootmachine +10 -0
- data/bin/sdc-resizemachine +32 -0
- data/bin/sdc-setup +63 -0
- data/bin/sdc-startmachine +10 -0
- data/bin/sdc-startmachinefromsnapshot +28 -0
- data/bin/sdc-stopmachine +10 -0
- data/config/fixtures/instrumentation.json +4 -0
- data/config/fixtures/key.json +4 -0
- data/config/fixtures/tag.json +3 -0
- data/lib/cli_helper.rb +12 -0
- data/lib/faraday/response/mashify.rb +26 -0
- data/lib/faraday/response/parse_json.rb +22 -0
- data/lib/smartdc.rb +8 -0
- data/lib/smartdc/api/analytics.rb +22 -0
- data/lib/smartdc/api/analytics/instrumentations.rb +45 -0
- data/lib/smartdc/api/datacenters.rb +21 -0
- data/lib/smartdc/api/datasets.rb +21 -0
- data/lib/smartdc/api/keys.rb +31 -0
- data/lib/smartdc/api/machine/metadata.rb +31 -0
- data/lib/smartdc/api/machine/snapshots.rb +37 -0
- data/lib/smartdc/api/machine/tags.rb +31 -0
- data/lib/smartdc/api/machines.rb +75 -0
- data/lib/smartdc/api/packages.rb +21 -0
- data/lib/smartdc/client.rb +40 -0
- data/lib/smartdc/request.rb +85 -0
- data/smartdc.gemspec +138 -0
- data/spec/smartdc/api/analytics_spec.rb +32 -0
- data/spec/smartdc/api/datacenters_spec.rb +16 -0
- data/spec/smartdc/api/datasets_spec.rb +16 -0
- data/spec/smartdc/api/keys_spec.rb +32 -0
- data/spec/smartdc/api/machine/metadata_spec.rb +42 -0
- data/spec/smartdc/api/machine/snapshots_spec.rb +58 -0
- data/spec/smartdc/api/machine/tags_spec.rb +48 -0
- data/spec/smartdc/api/machines_spec.rb +96 -0
- data/spec/smartdc/api/packages_spec.rb +16 -0
- data/spec/smartdc/client_spec.rb +45 -0
- data/spec/smartdc/request_spec.rb +11 -0
- data/spec/smartdc_spec.rb +9 -0
- data/spec/spec_helper.rb +12 -0
- metadata +259 -0
@@ -0,0 +1,4 @@
|
|
1
|
+
{
|
2
|
+
"name": "sample",
|
3
|
+
"key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBnUxM+7a2f9K3PaKESQlf0YNg/UEXw4CxzLs4aHZciq2neHWeqD22uMIEkqIaYZYZAnbGCCPnz1h8ewk69D4/QVqG4Yw9wR0gEkHMu4xzSrQkCktftVnC0xv4tuxYBWKBu4q+t0R63oOPwzmfnSjcVXf+H6cDRzeBuQYjSaFcqCHIy1ehXfiesb+mdm/hlBA8u1WDZoLi/DELtpkwtX6mNySZCDTGrcua4Xc02ua2olpqj1UIYIZrs9Xyiz5RZP2lPzGMxP0k9lToZQHH1HprABDpEK7MckZbIDHHkoGlPhLEG40H0Wtq9hdgmCIw/rsUweFuwxDn/4BjEhSIBzqn"
|
4
|
+
}
|
data/lib/cli_helper.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'pp'
|
2
|
+
require "optparse"
|
3
|
+
require 'smartdc'
|
4
|
+
|
5
|
+
def fixture(name, path='config/fixtures')
|
6
|
+
json = File.read(File.join(File.dirname(__FILE__), '..', path, "/#{name}.json"))
|
7
|
+
MultiJson.decode(json)
|
8
|
+
end
|
9
|
+
|
10
|
+
def client
|
11
|
+
@client ||= Smartdc.new(fixture('config', 'config'))
|
12
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'faraday'
|
2
|
+
|
3
|
+
module Faraday
|
4
|
+
class Response::Mashify < Response::Middleware
|
5
|
+
dependency 'hashie/mash'
|
6
|
+
|
7
|
+
class << self
|
8
|
+
attr_accessor :mash_class
|
9
|
+
end
|
10
|
+
|
11
|
+
self.mash_class = ::Hashie::Mash
|
12
|
+
|
13
|
+
def parse(body)
|
14
|
+
case body
|
15
|
+
when Hash
|
16
|
+
self.class.mash_class.new(body)
|
17
|
+
when Array
|
18
|
+
body.map { |item| item.is_a?(Hash) ? self.class.mash_class.new(item) : item }
|
19
|
+
else
|
20
|
+
body
|
21
|
+
end
|
22
|
+
rescue
|
23
|
+
body
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'faraday'
|
2
|
+
|
3
|
+
module Faraday
|
4
|
+
class Response::ParseJson < Response::Middleware
|
5
|
+
dependency 'multi_json'
|
6
|
+
|
7
|
+
def parse(body)
|
8
|
+
case body
|
9
|
+
when ''
|
10
|
+
nil
|
11
|
+
when 'true'
|
12
|
+
true
|
13
|
+
when 'false'
|
14
|
+
false
|
15
|
+
else
|
16
|
+
::MultiJson.decode(body)
|
17
|
+
end
|
18
|
+
rescue
|
19
|
+
body
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/smartdc.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'smartdc/api/analytics/instrumentations'
|
2
|
+
|
3
|
+
module Smartdc
|
4
|
+
module Api
|
5
|
+
class Analytics
|
6
|
+
attr_reader :request, :id
|
7
|
+
|
8
|
+
def initialize(request, id=nil)
|
9
|
+
@request = request
|
10
|
+
@id = id
|
11
|
+
end
|
12
|
+
|
13
|
+
def describe
|
14
|
+
request.get('my/analytics')
|
15
|
+
end
|
16
|
+
|
17
|
+
def instrumentations(_id=nil)
|
18
|
+
Smartdc::Api::Analytics::Instrumentations.new(request, _id)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module Smartdc::Api
|
2
|
+
class Analytics
|
3
|
+
class Instrumentations
|
4
|
+
attr_reader :request, :id
|
5
|
+
|
6
|
+
def initialize(request, id)
|
7
|
+
@request = request
|
8
|
+
@id = id
|
9
|
+
end
|
10
|
+
|
11
|
+
def create(params={})
|
12
|
+
request.post('my/analytics/instrumentations/', params)
|
13
|
+
end
|
14
|
+
|
15
|
+
def read
|
16
|
+
raise ArgumentError unless id
|
17
|
+
request.get('my/analytics/instrumentations/' + id.to_s)
|
18
|
+
end
|
19
|
+
|
20
|
+
def find(params={})
|
21
|
+
request.get('my/analytics/instrumentations/', params)
|
22
|
+
end
|
23
|
+
|
24
|
+
def delete
|
25
|
+
request.delete('my/analytics/instrumentations/' + id.to_s)
|
26
|
+
request.response.status == 204 ? true : false
|
27
|
+
end
|
28
|
+
|
29
|
+
def value
|
30
|
+
raise ArgumentError unless id
|
31
|
+
request.get('my/analytics/instrumentations/' + id.to_s + '/value/raw')
|
32
|
+
end
|
33
|
+
|
34
|
+
def heatmap(params={})
|
35
|
+
raise ArgumentError unless id
|
36
|
+
request.get('my/analytics/instrumentations/' + id.to_s + '/value/heatmap/image', params)
|
37
|
+
end
|
38
|
+
|
39
|
+
def heatmap_details(params={})
|
40
|
+
raise ArgumentError unless id
|
41
|
+
request.get('my/analytics/instrumentations/' + id.to_s + '/value/heatmap/details', params)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Smartdc
|
2
|
+
module Api
|
3
|
+
class Datacenters
|
4
|
+
attr_reader :request, :id
|
5
|
+
|
6
|
+
def initialize(request, id=nil)
|
7
|
+
@request = request
|
8
|
+
@id = id
|
9
|
+
end
|
10
|
+
|
11
|
+
def read
|
12
|
+
raise ArgumentError unless id
|
13
|
+
request.get('my/datacenters/' + id.to_s)
|
14
|
+
end
|
15
|
+
|
16
|
+
def find(params={})
|
17
|
+
request.get('my/datacenters', params)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Smartdc
|
2
|
+
module Api
|
3
|
+
class Datasets
|
4
|
+
attr_reader :request, :id
|
5
|
+
|
6
|
+
def initialize(request, id=nil)
|
7
|
+
@request = request
|
8
|
+
@id = id
|
9
|
+
end
|
10
|
+
|
11
|
+
def read
|
12
|
+
raise ArgumentError unless id
|
13
|
+
request.get('my/datasets/' + id.to_s)
|
14
|
+
end
|
15
|
+
|
16
|
+
def find(params={})
|
17
|
+
request.get('my/datasets', params)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Smartdc
|
2
|
+
module Api
|
3
|
+
class Keys
|
4
|
+
attr_reader :request, :id
|
5
|
+
|
6
|
+
def initialize(request, id=nil)
|
7
|
+
@request = request
|
8
|
+
@id = id
|
9
|
+
end
|
10
|
+
|
11
|
+
def create(params={})
|
12
|
+
request.post('my/keys/', params)
|
13
|
+
end
|
14
|
+
|
15
|
+
def read
|
16
|
+
raise ArgumentError unless id
|
17
|
+
request.get('my/keys/' + id.to_s)
|
18
|
+
end
|
19
|
+
|
20
|
+
def find(params={})
|
21
|
+
request.get('my/keys', params)
|
22
|
+
end
|
23
|
+
|
24
|
+
def delete
|
25
|
+
raise ArgumentError unless id
|
26
|
+
request.delete('my/keys/' + id.to_s)
|
27
|
+
request.response.status == 204 ? true : false
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Smartdc::Api
|
2
|
+
module Machine
|
3
|
+
class Metadata
|
4
|
+
attr_reader :request, :id
|
5
|
+
|
6
|
+
def initialize(request, id1, id)
|
7
|
+
@request = request
|
8
|
+
@id1 = id1
|
9
|
+
@id = id
|
10
|
+
end
|
11
|
+
|
12
|
+
def create(params={})
|
13
|
+
request.post('my/machines/' + @id1.to_s + '/metadata/', params)
|
14
|
+
end
|
15
|
+
|
16
|
+
def read
|
17
|
+
raise ArgumentError unless id
|
18
|
+
request.get('my/machines/' + @id1.to_s + '/metadata/' + id.to_s)
|
19
|
+
end
|
20
|
+
|
21
|
+
def find(params={})
|
22
|
+
request.get('my/machines/' + @id1.to_s + '/metadata/', params)
|
23
|
+
end
|
24
|
+
|
25
|
+
def delete
|
26
|
+
request.delete('my/machines/' + @id1.to_s + '/metadata/' + id.to_s)
|
27
|
+
request.response.status == 204 ? true : false
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Smartdc::Api
|
2
|
+
module Machine
|
3
|
+
class Snapshots
|
4
|
+
attr_reader :request, :id
|
5
|
+
|
6
|
+
def initialize(request, id1, id)
|
7
|
+
@request = request
|
8
|
+
@id1 = id1
|
9
|
+
@id = id
|
10
|
+
end
|
11
|
+
|
12
|
+
def create(params={})
|
13
|
+
request.post('my/machines/' + @id1.to_s + '/snapshots/', params)
|
14
|
+
end
|
15
|
+
|
16
|
+
def start
|
17
|
+
raise ArgumentError unless id
|
18
|
+
request.post('my/machines/' + @id1.to_s + '/snapshots/' + id.to_s)
|
19
|
+
request.response.status == 202 ? true : false
|
20
|
+
end
|
21
|
+
|
22
|
+
def read
|
23
|
+
raise ArgumentError unless id
|
24
|
+
request.get('my/machines/' + @id1.to_s + '/snapshots/' + id.to_s)
|
25
|
+
end
|
26
|
+
|
27
|
+
def find(params={})
|
28
|
+
request.get('my/machines/' + @id1.to_s + '/snapshots/', params)
|
29
|
+
end
|
30
|
+
|
31
|
+
def delete
|
32
|
+
request.delete('my/machines/' + @id1.to_s + '/snapshots/' + id.to_s)
|
33
|
+
request.response.status == 204 ? true : false
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Smartdc::Api
|
2
|
+
module Machine
|
3
|
+
class Tags
|
4
|
+
attr_reader :request, :id
|
5
|
+
|
6
|
+
def initialize(request, id1, id)
|
7
|
+
@request = request
|
8
|
+
@id1 = id1
|
9
|
+
@id = id
|
10
|
+
end
|
11
|
+
|
12
|
+
def create(params={})
|
13
|
+
request.post('my/machines/' + @id1.to_s + '/tags/', params)
|
14
|
+
end
|
15
|
+
|
16
|
+
def read
|
17
|
+
raise ArgumentError unless id
|
18
|
+
request.get('my/machines/' + @id1.to_s + '/tags/' + id.to_s)
|
19
|
+
end
|
20
|
+
|
21
|
+
def find(params={})
|
22
|
+
request.get('my/machines/' + @id1.to_s + '/tags/', params)
|
23
|
+
end
|
24
|
+
|
25
|
+
def delete
|
26
|
+
request.delete('my/machines/' + @id1.to_s + '/tags/' + id.to_s)
|
27
|
+
request.response.status == 204 ? true : false
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
require 'smartdc/api/machine/tags'
|
2
|
+
require 'smartdc/api/machine/metadata'
|
3
|
+
require 'smartdc/api/machine/snapshots'
|
4
|
+
|
5
|
+
module Smartdc
|
6
|
+
module Api
|
7
|
+
class Machines
|
8
|
+
attr_reader :request, :id
|
9
|
+
|
10
|
+
def initialize(request, id=nil)
|
11
|
+
@request = request
|
12
|
+
@id = id
|
13
|
+
end
|
14
|
+
|
15
|
+
def create(params={})
|
16
|
+
request.post('my/machines/', params)
|
17
|
+
end
|
18
|
+
|
19
|
+
def read
|
20
|
+
raise ArgumentError unless id
|
21
|
+
request.get('my/machines/' + id.to_s)
|
22
|
+
end
|
23
|
+
|
24
|
+
def find(params={})
|
25
|
+
request.get('my/machines', params)
|
26
|
+
end
|
27
|
+
|
28
|
+
def delete
|
29
|
+
raise ArgumentError unless id
|
30
|
+
request.delete('my/machines/' + id.to_s)
|
31
|
+
request.response.status == 204 ? true : false
|
32
|
+
end
|
33
|
+
|
34
|
+
def stop
|
35
|
+
raise ArgumentError unless id
|
36
|
+
request.post('my/machines/' + id.to_s, {'action'=>'stop'})
|
37
|
+
request.response.status == 202 ? true : false
|
38
|
+
end
|
39
|
+
|
40
|
+
def start
|
41
|
+
raise ArgumentError unless id
|
42
|
+
request.post('my/machines/' + id.to_s, {'action'=>'start'})
|
43
|
+
request.response.status == 202 ? true : false
|
44
|
+
end
|
45
|
+
|
46
|
+
def reboot
|
47
|
+
raise ArgumentError unless id
|
48
|
+
request.post('my/machines/' + id.to_s, {'action'=>'reboot'})
|
49
|
+
request.response.status == 202 ? true : false
|
50
|
+
end
|
51
|
+
|
52
|
+
def resize(params={})
|
53
|
+
raise ArgumentError unless id
|
54
|
+
params[:action] = 'resize'
|
55
|
+
request.post('my/machines/' + id.to_s, params)
|
56
|
+
request.response.status == 202 ? true : false
|
57
|
+
end
|
58
|
+
|
59
|
+
def tags(_id=nil)
|
60
|
+
raise ArgumentError unless id
|
61
|
+
Smartdc::Api::Machine::Tags.new(request, id, _id)
|
62
|
+
end
|
63
|
+
|
64
|
+
def metadata(_id=nil)
|
65
|
+
raise ArgumentError unless id
|
66
|
+
Smartdc::Api::Machine::Metadata.new(request, id, _id)
|
67
|
+
end
|
68
|
+
|
69
|
+
def snapshots(_id=nil)
|
70
|
+
raise ArgumentError unless id
|
71
|
+
Smartdc::Api::Machine::Snapshots.new(request, id, _id)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Smartdc
|
2
|
+
module Api
|
3
|
+
class Packages
|
4
|
+
attr_reader :request, :id
|
5
|
+
|
6
|
+
def initialize(request, id=nil)
|
7
|
+
@request = request
|
8
|
+
@id = id
|
9
|
+
end
|
10
|
+
|
11
|
+
def read
|
12
|
+
raise ArgumentError unless id
|
13
|
+
request.get('my/packages/' + id.to_s)
|
14
|
+
end
|
15
|
+
|
16
|
+
def find(params={})
|
17
|
+
request.get('my/packages', params)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|