fog-joyent 0.0.1
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 +7 -0
- data/.gitignore +9 -0
- data/.rubocop.yml +20 -0
- data/.rubocop_todo.yml +436 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +26 -0
- data/CONTRIBUTING.md +18 -0
- data/CONTRIBUTORS.md +17 -0
- data/Gemfile +4 -0
- data/LICENSE.md +10 -0
- data/README.md +29 -0
- data/Rakefile +12 -0
- data/fog-joyent.gemspec +29 -0
- data/lib/fog/bin/joyent.rb +33 -0
- data/lib/fog/joyent.rb +16 -0
- data/lib/fog/joyent/analytics.rb +310 -0
- data/lib/fog/joyent/compute.rb +272 -0
- data/lib/fog/joyent/core.rb +10 -0
- data/lib/fog/joyent/errors.rb +91 -0
- data/lib/fog/joyent/models/analytics/field.rb +13 -0
- data/lib/fog/joyent/models/analytics/fields.rb +24 -0
- data/lib/fog/joyent/models/analytics/instrumentation.rb +82 -0
- data/lib/fog/joyent/models/analytics/instrumentations.rb +23 -0
- data/lib/fog/joyent/models/analytics/joyent_module.rb +13 -0
- data/lib/fog/joyent/models/analytics/joyent_modules.rb +24 -0
- data/lib/fog/joyent/models/analytics/metric.rb +17 -0
- data/lib/fog/joyent/models/analytics/metrics.rb +16 -0
- data/lib/fog/joyent/models/analytics/transformation.rb +13 -0
- data/lib/fog/joyent/models/analytics/transformations.rb +24 -0
- data/lib/fog/joyent/models/analytics/type.rb +16 -0
- data/lib/fog/joyent/models/analytics/types.rb +24 -0
- data/lib/fog/joyent/models/analytics/value.rb +20 -0
- data/lib/fog/joyent/models/compute/datacenter.rb +11 -0
- data/lib/fog/joyent/models/compute/datacenters.rb +21 -0
- data/lib/fog/joyent/models/compute/flavor.rb +19 -0
- data/lib/fog/joyent/models/compute/flavors.rb +21 -0
- data/lib/fog/joyent/models/compute/image.rb +26 -0
- data/lib/fog/joyent/models/compute/images.rb +30 -0
- data/lib/fog/joyent/models/compute/key.rb +19 -0
- data/lib/fog/joyent/models/compute/keys.rb +32 -0
- data/lib/fog/joyent/models/compute/network.rb +12 -0
- data/lib/fog/joyent/models/compute/networks.rb +14 -0
- data/lib/fog/joyent/models/compute/server.rb +124 -0
- data/lib/fog/joyent/models/compute/servers.rb +35 -0
- data/lib/fog/joyent/models/compute/snapshot.rb +44 -0
- data/lib/fog/joyent/models/compute/snapshots.rb +35 -0
- data/lib/fog/joyent/requests/analytics/create_instrumentation.rb +25 -0
- data/lib/fog/joyent/requests/analytics/delete_instrumentation.rb +23 -0
- data/lib/fog/joyent/requests/analytics/describe_analytics.rb +26 -0
- data/lib/fog/joyent/requests/analytics/get_instrumentation.rb +26 -0
- data/lib/fog/joyent/requests/analytics/get_instrumentation_value.rb +30 -0
- data/lib/fog/joyent/requests/analytics/list_instrumentations.rb +25 -0
- data/lib/fog/joyent/requests/compute/add_machine_tags.rb +19 -0
- data/lib/fog/joyent/requests/compute/create_key.rb +54 -0
- data/lib/fog/joyent/requests/compute/create_machine.rb +16 -0
- data/lib/fog/joyent/requests/compute/create_machine_snapshot.rb +16 -0
- data/lib/fog/joyent/requests/compute/delete_all_machine_metadata.rb +16 -0
- data/lib/fog/joyent/requests/compute/delete_all_machine_tags.rb +15 -0
- data/lib/fog/joyent/requests/compute/delete_key.rb +27 -0
- data/lib/fog/joyent/requests/compute/delete_machine.rb +15 -0
- data/lib/fog/joyent/requests/compute/delete_machine_metadata.rb +16 -0
- data/lib/fog/joyent/requests/compute/delete_machine_snapshot.rb +18 -0
- data/lib/fog/joyent/requests/compute/delete_machine_tag.rb +15 -0
- data/lib/fog/joyent/requests/compute/get_dataset.rb +27 -0
- data/lib/fog/joyent/requests/compute/get_image.rb +28 -0
- data/lib/fog/joyent/requests/compute/get_key.rb +29 -0
- data/lib/fog/joyent/requests/compute/get_machine.rb +29 -0
- data/lib/fog/joyent/requests/compute/get_machine_metadata.rb +24 -0
- data/lib/fog/joyent/requests/compute/get_machine_snapshot.rb +15 -0
- data/lib/fog/joyent/requests/compute/get_machine_tag.rb +18 -0
- data/lib/fog/joyent/requests/compute/get_package.rb +32 -0
- data/lib/fog/joyent/requests/compute/list_datacenters.rb +16 -0
- data/lib/fog/joyent/requests/compute/list_datasets.rb +24 -0
- data/lib/fog/joyent/requests/compute/list_images.rb +25 -0
- data/lib/fog/joyent/requests/compute/list_keys.rb +25 -0
- data/lib/fog/joyent/requests/compute/list_machine_snapshots.rb +15 -0
- data/lib/fog/joyent/requests/compute/list_machine_tags.rb +20 -0
- data/lib/fog/joyent/requests/compute/list_machines.rb +26 -0
- data/lib/fog/joyent/requests/compute/list_networks.rb +26 -0
- data/lib/fog/joyent/requests/compute/list_packages.rb +34 -0
- data/lib/fog/joyent/requests/compute/reboot_machine.rb +15 -0
- data/lib/fog/joyent/requests/compute/resize_machine.rb +16 -0
- data/lib/fog/joyent/requests/compute/start_machine.rb +16 -0
- data/lib/fog/joyent/requests/compute/start_machine_from_snapshot.rb +15 -0
- data/lib/fog/joyent/requests/compute/stop_machine.rb +16 -0
- data/lib/fog/joyent/requests/compute/update_machine_metadata.rb +15 -0
- data/lib/fog/joyent/version.rb +5 -0
- data/tests/helper.rb +18 -0
- data/tests/helpers/mock_helper.rb +16 -0
- data/tests/helpers/succeeds_helper.rb +9 -0
- data/tests/joyent/models/analytics/field_tests.rb +10 -0
- data/tests/joyent/models/analytics/fields_tests.rb +13 -0
- data/tests/joyent/models/analytics/instrumentation_tests.rb +13 -0
- data/tests/joyent/models/analytics/instrumentations_tests.rb +3 -0
- data/tests/joyent/models/analytics/joyent_module_tests.rb +10 -0
- data/tests/joyent/models/analytics/joyent_modules_tests.rb +13 -0
- data/tests/joyent/models/analytics/metric_tests.rb +10 -0
- data/tests/joyent/models/analytics/metrics_tests.rb +20 -0
- data/tests/joyent/models/analytics/transformation_tests.rb +10 -0
- data/tests/joyent/models/analytics/transformations_tests.rb +13 -0
- data/tests/joyent/models/analytics/type_tests.rb +10 -0
- data/tests/joyent/models/analytics/types_tests.rb +13 -0
- data/tests/joyent/requests/analytics/instrumentation_tests.rb +44 -0
- data/tests/joyent/requests/compute/datasets_tests.rb +58 -0
- data/tests/joyent/requests/compute/keys_tests.rb +47 -0
- data/tests/joyent/requests/compute/machines_tests.rb +66 -0
- data/tests/joyent/requests/compute/networks_tests.rb +39 -0
- data/tests/joyent/requests/compute/packages_tests.rb +68 -0
- metadata +235 -0
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'fog/core/collection'
|
2
|
+
require 'fog/joyent/models/compute/server'
|
3
|
+
|
4
|
+
module Fog
|
5
|
+
module Compute
|
6
|
+
class Joyent
|
7
|
+
class Servers < Fog::Collection
|
8
|
+
model Fog::Compute::Joyent::Server
|
9
|
+
|
10
|
+
def all
|
11
|
+
load(service.list_machines().body)
|
12
|
+
end
|
13
|
+
|
14
|
+
def create(params = {})
|
15
|
+
data = service.create_machine(params).body
|
16
|
+
server = new(data)
|
17
|
+
server
|
18
|
+
end
|
19
|
+
|
20
|
+
def bootstrap(new_attributes = {})
|
21
|
+
server = create(new_attributes)
|
22
|
+
server.wait_for { ready? }
|
23
|
+
server
|
24
|
+
end
|
25
|
+
|
26
|
+
def get(machine_id)
|
27
|
+
data = service.get_machine(machine_id).body
|
28
|
+
server = new(data)
|
29
|
+
server.tags = server.list_tags if server.tags.nil?
|
30
|
+
server
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end # Joyent
|
34
|
+
end # Compute
|
35
|
+
end # Fog
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module Fog
|
2
|
+
module Compute
|
3
|
+
class Joyent
|
4
|
+
class Snapshot < Fog::Model
|
5
|
+
identity :name
|
6
|
+
|
7
|
+
attribute :name
|
8
|
+
attribute :state
|
9
|
+
attribute :machine_id
|
10
|
+
attribute :created, :type => :time
|
11
|
+
attribute :updated, :type => :time
|
12
|
+
|
13
|
+
def reload
|
14
|
+
requires :name
|
15
|
+
requires :machine_id
|
16
|
+
|
17
|
+
service.snapshots.get(self.machine_id, self.name)
|
18
|
+
end
|
19
|
+
|
20
|
+
def start
|
21
|
+
requires :name
|
22
|
+
requires :machine_id
|
23
|
+
|
24
|
+
service.start_machine_from_snapshot(self.machine_id, self.name)
|
25
|
+
true
|
26
|
+
end
|
27
|
+
|
28
|
+
def destroy
|
29
|
+
requires :name
|
30
|
+
requires :machine_id
|
31
|
+
|
32
|
+
service.delete_machine_snapshot(self.machine_id, self.name)
|
33
|
+
true
|
34
|
+
end
|
35
|
+
|
36
|
+
def machine
|
37
|
+
requires :machine_id
|
38
|
+
|
39
|
+
service.servers.get(self.machine_id)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'fog/joyent/models/compute/snapshot'
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module Compute
|
5
|
+
class Joyent
|
6
|
+
class Snapshots < Fog::Collection
|
7
|
+
model Fog::Compute::Joyent::Snapshot
|
8
|
+
|
9
|
+
def create(machine_id, snapshot_name)
|
10
|
+
data = self.service.create_machine_snapshot(machine_id, snapshot_name).body
|
11
|
+
data['machine_id'] = machine_id
|
12
|
+
new(data)
|
13
|
+
end
|
14
|
+
|
15
|
+
def all(machine_id)
|
16
|
+
data = service.list_machine_snapshots(machine_id).body.map do |m|
|
17
|
+
m["machine_id"] = machine_id
|
18
|
+
m
|
19
|
+
end
|
20
|
+
load(data)
|
21
|
+
end
|
22
|
+
|
23
|
+
def get(machine_id, snapshot_name)
|
24
|
+
data = service.get_machine_snapshot(machine_id, snapshot_name).body
|
25
|
+
if data
|
26
|
+
data["machine_id"] = machine_id
|
27
|
+
new(data)
|
28
|
+
else
|
29
|
+
nil
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Fog
|
2
|
+
module Joyent
|
3
|
+
class Analytics
|
4
|
+
class Real
|
5
|
+
def create_instrumentation(values = {})
|
6
|
+
request(
|
7
|
+
:path => "#{@joyent_username}/analytics/instrumentations",
|
8
|
+
:method => "POST",
|
9
|
+
:body => values,
|
10
|
+
:expects => [200,201]
|
11
|
+
)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
class Mock
|
16
|
+
def create_instrumentation(values = {})
|
17
|
+
response = Excon::Response.new
|
18
|
+
response.status = 201
|
19
|
+
response.body = self.data[:instrumentation]
|
20
|
+
response
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Fog
|
2
|
+
module Joyent
|
3
|
+
class Analytics
|
4
|
+
class Real
|
5
|
+
def delete_instrumentation(id)
|
6
|
+
request(
|
7
|
+
:path => "#{@joyent_username}/analytics/instrumentations/#{id}",
|
8
|
+
:method => "DELETE",
|
9
|
+
:expects => 204
|
10
|
+
)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class Mock
|
15
|
+
def delete_instrumentation(id)
|
16
|
+
response = Excon::Response.new
|
17
|
+
response.status = 204
|
18
|
+
response
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Fog
|
2
|
+
module Joyent
|
3
|
+
class Analytics
|
4
|
+
class Real
|
5
|
+
def describe_analytics(force = false)
|
6
|
+
@describe_analytics = nil if force
|
7
|
+
@describe_analytics ||= request(
|
8
|
+
:path => "#{@joyent_username}/analytics",
|
9
|
+
:method => "GET",
|
10
|
+
:expects => 200,
|
11
|
+
:idempotent => true
|
12
|
+
)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
class Mock
|
17
|
+
def describe_analytics(force = false)
|
18
|
+
response = Excon::Response.new
|
19
|
+
response.status = 200
|
20
|
+
response.body = self.data[:describe_analytics]
|
21
|
+
response
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Fog
|
2
|
+
module Joyent
|
3
|
+
class Analytics
|
4
|
+
class Real
|
5
|
+
def get_instrumentation(id)
|
6
|
+
request(
|
7
|
+
:path => "#{@joyent_username}/analytics/instrumentations/#{id}",
|
8
|
+
:method => "GET",
|
9
|
+
:expects => 200,
|
10
|
+
:idempotent => true
|
11
|
+
)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
class Mock
|
16
|
+
def get_instrumentation(id)
|
17
|
+
raise Fog::Compute::Joyent::Errors::NotFound.new('not found') unless id == self.data[:instrumentation]['id']
|
18
|
+
response = Excon::Response.new
|
19
|
+
response.status = 200
|
20
|
+
response.body = self.data[:instrumentation]
|
21
|
+
response
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Fog
|
2
|
+
module Joyent
|
3
|
+
class Analytics
|
4
|
+
class Real
|
5
|
+
def get_instrumentation_value(url, requested_start_time, ndatapoints, duration)
|
6
|
+
request(
|
7
|
+
:path => url,
|
8
|
+
:method => 'GET',
|
9
|
+
:expects => 200,
|
10
|
+
:idempotent => true,
|
11
|
+
:query => {
|
12
|
+
:ndatapoints => ndatapoints,
|
13
|
+
:start_time => requested_start_time.to_i,
|
14
|
+
:duration => duration
|
15
|
+
}
|
16
|
+
)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
class Mock
|
21
|
+
def get_instrumentation_value(url, requested_start_time, ndatapoints, duration)
|
22
|
+
response = Excon::Response.new
|
23
|
+
response.status = 200
|
24
|
+
response.body = [self.data[:values]]
|
25
|
+
response
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Fog
|
2
|
+
module Joyent
|
3
|
+
class Analytics
|
4
|
+
class Real
|
5
|
+
def list_instrumentations
|
6
|
+
request(
|
7
|
+
:path => "#{@joyent_username}/analytics/instrumentations",
|
8
|
+
:method => "GET",
|
9
|
+
:expects => 200,
|
10
|
+
:idempotent => true
|
11
|
+
)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
class Mock
|
16
|
+
def list_instrumentations
|
17
|
+
response = Excon::Response.new
|
18
|
+
response.status = 200
|
19
|
+
response.body = [self.data[:instrumentation]]
|
20
|
+
response
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Fog
|
2
|
+
module Compute
|
3
|
+
class Joyent
|
4
|
+
class Real
|
5
|
+
# https://us-west-1.api.joyentcloud.com/docs#AddMachineTags
|
6
|
+
def add_machine_tags(machine_id, tags={})
|
7
|
+
raise ArgumentError, "tags must be a Hash of tags" unless tags.is_a?(Hash)
|
8
|
+
|
9
|
+
request(
|
10
|
+
:path => "/my/machines/#{machine_id}/tags",
|
11
|
+
:method => "POST",
|
12
|
+
:body => tags,
|
13
|
+
:expects => 200
|
14
|
+
)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
module Fog
|
2
|
+
module Compute
|
3
|
+
class Joyent
|
4
|
+
class Mock
|
5
|
+
#
|
6
|
+
# https://us-west-1.api.joyentcloud.com/docs#CreateKey
|
7
|
+
#
|
8
|
+
def create_key(params)
|
9
|
+
name = params[:name]
|
10
|
+
key = params[:key]
|
11
|
+
|
12
|
+
record = {
|
13
|
+
"name" => name,
|
14
|
+
"key" => key,
|
15
|
+
"created" => Time.now.utc,
|
16
|
+
"updated" => Time.now.utc
|
17
|
+
}
|
18
|
+
|
19
|
+
self.data[:keys][name] = record
|
20
|
+
|
21
|
+
response = Excon::Response.new
|
22
|
+
response.status = 201
|
23
|
+
response.body = record
|
24
|
+
response
|
25
|
+
end
|
26
|
+
end # Mock
|
27
|
+
|
28
|
+
class Real
|
29
|
+
# Creates a new SSH Key
|
30
|
+
# ==== Parameters
|
31
|
+
# * name<~String> - Name to assign to this key
|
32
|
+
# * key<~String> - OpenSSH formatted public key
|
33
|
+
#
|
34
|
+
# ==== Returns
|
35
|
+
# * response<~Excon::Response>:
|
36
|
+
# * body<~Hash>:
|
37
|
+
# * 'name'<~String> - Name for this key
|
38
|
+
# * 'key'<~String> - OpenSSH formatted public key
|
39
|
+
#
|
40
|
+
def create_key(params={})
|
41
|
+
raise ArgumentError, "error creating key: [name] is required" unless params[:name]
|
42
|
+
raise ArgumentError, "error creating key: [key] is required" unless params[:key]
|
43
|
+
|
44
|
+
request(
|
45
|
+
:method => "POST",
|
46
|
+
:path => "/my/keys",
|
47
|
+
:body => { "name" => params[:name], "key" => params[:key] },
|
48
|
+
:expects => 201
|
49
|
+
)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Fog
|
2
|
+
module Compute
|
3
|
+
class Joyent
|
4
|
+
class Real
|
5
|
+
def create_machine_snapshot(machine_id, snapshot_name)
|
6
|
+
request(
|
7
|
+
:method => "POST",
|
8
|
+
:path => "/my/machines/#{machine_id}/snapshots",
|
9
|
+
:body => {"name" => snapshot_name },
|
10
|
+
:expects => [201]
|
11
|
+
)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Fog
|
2
|
+
module Compute
|
3
|
+
class Joyent
|
4
|
+
class Real
|
5
|
+
# https://us-west-1.api.joyentcloud.com/docs#DeleteMachineMetadata
|
6
|
+
def delete_all_machine_metadata(machine_id)
|
7
|
+
request(
|
8
|
+
:method => "DELETE",
|
9
|
+
:path => "/my/machines/#{machine_id}/metadata",
|
10
|
+
:expects => 204
|
11
|
+
)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Fog
|
2
|
+
module Compute
|
3
|
+
class Joyent
|
4
|
+
class Mock
|
5
|
+
def delete_key(keyname)
|
6
|
+
if self.data[:keys].delete(keyname)
|
7
|
+
response = Excon::Response.new
|
8
|
+
response.status = 204
|
9
|
+
response
|
10
|
+
else
|
11
|
+
raise Excon::Errors::NotFound, "Not Found"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
class Real
|
17
|
+
def delete_key(name)
|
18
|
+
request(
|
19
|
+
:method => "DELETE",
|
20
|
+
:path => "/my/keys/#{name}",
|
21
|
+
:expects => 204
|
22
|
+
)
|
23
|
+
end
|
24
|
+
end # Real
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|