fog-linode 0.0.1.rc1
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 +8 -0
- data/.rubocop.yml +12 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +17 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/CONTRIBUTORS.md +1 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +79 -0
- data/LICENSE.md +20 -0
- data/README.md +74 -0
- data/Rakefile +13 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/fog-linode.gemspec +34 -0
- data/lib/fog/linode.rb +17 -0
- data/lib/fog/linode/compute.rb +50 -0
- data/lib/fog/linode/compute/models/image.rb +23 -0
- data/lib/fog/linode/compute/models/images.rb +23 -0
- data/lib/fog/linode/compute/models/kernel.rb +19 -0
- data/lib/fog/linode/compute/models/kernels.rb +23 -0
- data/lib/fog/linode/compute/models/region.rb +14 -0
- data/lib/fog/linode/compute/models/regions.rb +23 -0
- data/lib/fog/linode/compute/models/server.rb +56 -0
- data/lib/fog/linode/compute/models/servers.rb +23 -0
- data/lib/fog/linode/compute/models/stack_script.rb +26 -0
- data/lib/fog/linode/compute/models/stack_scripts.rb +23 -0
- data/lib/fog/linode/compute/models/type.rb +32 -0
- data/lib/fog/linode/compute/models/types.rb +23 -0
- data/lib/fog/linode/compute/requests/create_server.rb +22 -0
- data/lib/fog/linode/compute/requests/delete_server.rb +17 -0
- data/lib/fog/linode/compute/requests/list_images.rb +16 -0
- data/lib/fog/linode/compute/requests/list_kernels.rb +16 -0
- data/lib/fog/linode/compute/requests/list_regions.rb +18 -0
- data/lib/fog/linode/compute/requests/list_servers.rb +16 -0
- data/lib/fog/linode/compute/requests/list_stack_scripts.rb +16 -0
- data/lib/fog/linode/compute/requests/list_types.rb +19 -0
- data/lib/fog/linode/compute/requests/update_server.rb +21 -0
- data/lib/fog/linode/compute/requests/view_image.rb +17 -0
- data/lib/fog/linode/compute/requests/view_kernel.rb +17 -0
- data/lib/fog/linode/compute/requests/view_region.rb +18 -0
- data/lib/fog/linode/compute/requests/view_server.rb +17 -0
- data/lib/fog/linode/compute/requests/view_stack_script.rb +17 -0
- data/lib/fog/linode/compute/requests/view_type.rb +18 -0
- data/lib/fog/linode/dns.rb +37 -0
- data/lib/fog/linode/dns/models/domain.rb +46 -0
- data/lib/fog/linode/dns/models/domain_record.rb +38 -0
- data/lib/fog/linode/dns/models/domain_records.rb +30 -0
- data/lib/fog/linode/dns/models/domains.rb +23 -0
- data/lib/fog/linode/dns/requests/create_domain.rb +22 -0
- data/lib/fog/linode/dns/requests/create_domain_record.rb +22 -0
- data/lib/fog/linode/dns/requests/delete_domain.rb +17 -0
- data/lib/fog/linode/dns/requests/delete_domain_record.rb +17 -0
- data/lib/fog/linode/dns/requests/list_domain_records.rb +19 -0
- data/lib/fog/linode/dns/requests/list_domains.rb +19 -0
- data/lib/fog/linode/dns/requests/update_domain.rb +21 -0
- data/lib/fog/linode/dns/requests/update_domain_record.rb +22 -0
- data/lib/fog/linode/dns/requests/view_domain.rb +18 -0
- data/lib/fog/linode/dns/requests/view_domain_record.rb +17 -0
- data/lib/fog/linode/paginated_collection.rb +44 -0
- data/lib/fog/linode/service.rb +37 -0
- data/lib/fog/linode/version.rb +5 -0
- metadata +247 -0
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'fog/core/model'
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module Linode
|
5
|
+
class Compute
|
6
|
+
# Read-only model for Linode images
|
7
|
+
class Image < Fog::Model
|
8
|
+
identity :id
|
9
|
+
|
10
|
+
attribute :label
|
11
|
+
attribute :created
|
12
|
+
attribute :created_by
|
13
|
+
attribute :deprecated
|
14
|
+
attribute :description
|
15
|
+
attribute :is_public
|
16
|
+
attribute :size
|
17
|
+
attribute :type
|
18
|
+
attribute :expiry
|
19
|
+
attribute :vendor
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'fog/core/collection'
|
2
|
+
require 'fog/linode/compute/models/kernel'
|
3
|
+
|
4
|
+
module Fog
|
5
|
+
module Linode
|
6
|
+
class Compute
|
7
|
+
# Collection class for loading Image models from Linode image data
|
8
|
+
class Images < Fog::Collection
|
9
|
+
model Image
|
10
|
+
|
11
|
+
def all(options = {})
|
12
|
+
images = service.list_images(options)
|
13
|
+
load images
|
14
|
+
end
|
15
|
+
|
16
|
+
def get(id)
|
17
|
+
image = service.view_image(id)
|
18
|
+
new image
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'fog/core/model'
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module Linode
|
5
|
+
class Compute
|
6
|
+
# Read-only model for Linode kernels
|
7
|
+
class Kernel < Fog::Model
|
8
|
+
identity :id
|
9
|
+
|
10
|
+
attribute :label
|
11
|
+
attribute :version
|
12
|
+
attribute :kvm
|
13
|
+
attribute :xen
|
14
|
+
attribute :architecture
|
15
|
+
attribute :pvops
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'fog/core/collection'
|
2
|
+
require 'fog/linode/compute/models/kernel'
|
3
|
+
|
4
|
+
module Fog
|
5
|
+
module Linode
|
6
|
+
class Compute
|
7
|
+
# Collection class for loading Kernel models from Linode instance kernel data
|
8
|
+
class Kernels < Fog::Collection
|
9
|
+
model Kernel
|
10
|
+
|
11
|
+
def all(options = {})
|
12
|
+
kernels = service.list_kernels(options)
|
13
|
+
load kernels
|
14
|
+
end
|
15
|
+
|
16
|
+
def get(id)
|
17
|
+
kernel = service.view_kernel(id)
|
18
|
+
new kernel
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'fog/core/collection'
|
2
|
+
require 'fog/linode/compute/models/type'
|
3
|
+
|
4
|
+
module Fog
|
5
|
+
module Linode
|
6
|
+
class Compute
|
7
|
+
# Collection class for loading Region models from Linode region data
|
8
|
+
class Regions < Fog::Collection
|
9
|
+
model Region
|
10
|
+
|
11
|
+
def all
|
12
|
+
regions = service.list_regions
|
13
|
+
load regions
|
14
|
+
end
|
15
|
+
|
16
|
+
def get(id)
|
17
|
+
region = service.view_region(id)
|
18
|
+
new region
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'fog/core/model'
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module Linode
|
5
|
+
class Compute
|
6
|
+
# Read-only model for Linode instances
|
7
|
+
class Server < Fog::Model
|
8
|
+
identity :id
|
9
|
+
|
10
|
+
attribute :label
|
11
|
+
attribute :region
|
12
|
+
attribute :image
|
13
|
+
attribute :type
|
14
|
+
attribute :group
|
15
|
+
attribute :tags
|
16
|
+
attribute :status
|
17
|
+
attribute :hypervisor
|
18
|
+
attribute :created
|
19
|
+
attribute :updated
|
20
|
+
attribute :ipv4
|
21
|
+
attribute :ipv6
|
22
|
+
attribute :specs
|
23
|
+
attribute :alerts
|
24
|
+
attribute :backups
|
25
|
+
attribute :watchdog_enabled
|
26
|
+
|
27
|
+
# Attributes for creation (not available when viewing, not supported for update)
|
28
|
+
attribute :backup_id
|
29
|
+
attribute :backups_enabled
|
30
|
+
attribute :swap_size
|
31
|
+
attribute :root_pass
|
32
|
+
attribute :authorized_keys
|
33
|
+
attribute :stackscript_id
|
34
|
+
attribute :stackscript_data
|
35
|
+
attribute :booted
|
36
|
+
attribute :private_ip
|
37
|
+
attribute :authorized_users
|
38
|
+
|
39
|
+
def save
|
40
|
+
if identity.nil?
|
41
|
+
merge_attributes(service.create_server(attributes))
|
42
|
+
else
|
43
|
+
merge_attributes(service.update_server(identity, attributes_for_update))
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
def attributes_for_update
|
50
|
+
supported_attributes = %i[label group tags alerts backups watchdog_enabled]
|
51
|
+
attributes.dup.select { |key| supported_attributes.include? key }
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'fog/core/collection'
|
2
|
+
require 'fog/linode/compute/models/kernel'
|
3
|
+
|
4
|
+
module Fog
|
5
|
+
module Linode
|
6
|
+
class Compute
|
7
|
+
# Collection class for loading Server models from Linode instance data
|
8
|
+
class Servers < Fog::Collection
|
9
|
+
model Server
|
10
|
+
|
11
|
+
def all(options = {})
|
12
|
+
servers = service.list_servers(options)
|
13
|
+
load servers
|
14
|
+
end
|
15
|
+
|
16
|
+
def get(id)
|
17
|
+
server = service.view_server(id)
|
18
|
+
new server
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'fog/core/model'
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module Linode
|
5
|
+
class Compute
|
6
|
+
# Read-only model for Linode StackScripts
|
7
|
+
class StackScript < Fog::Model
|
8
|
+
identity :id
|
9
|
+
|
10
|
+
attribute :username
|
11
|
+
attribute :user_gravatar_id
|
12
|
+
attribute :label
|
13
|
+
attribute :description
|
14
|
+
attribute :images
|
15
|
+
attribute :deployments_total
|
16
|
+
attribute :deployments_active
|
17
|
+
attribute :is_public
|
18
|
+
attribute :created
|
19
|
+
attribute :updated
|
20
|
+
attribute :rev_note
|
21
|
+
attribute :script
|
22
|
+
attribute :user_defined_fields
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'fog/core/collection'
|
2
|
+
require 'fog/linode/compute/models/type'
|
3
|
+
|
4
|
+
module Fog
|
5
|
+
module Linode
|
6
|
+
class Compute
|
7
|
+
# Collection class for loading StackScript models from Linode StackScript data
|
8
|
+
class StackScripts < Fog::Collection
|
9
|
+
model StackScript
|
10
|
+
|
11
|
+
def all(options = {})
|
12
|
+
stack_scripts = service.list_stack_scripts(options)
|
13
|
+
load stack_scripts
|
14
|
+
end
|
15
|
+
|
16
|
+
def get(id)
|
17
|
+
stack_script = service.view_stack_script(id)
|
18
|
+
new stack_script
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'fog/core/model'
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module Linode
|
5
|
+
class Compute
|
6
|
+
# Read-only model for Linode instance types
|
7
|
+
class Type < Fog::Model
|
8
|
+
identity :id
|
9
|
+
|
10
|
+
attribute :label
|
11
|
+
attribute :disk
|
12
|
+
attribute :class_name
|
13
|
+
attribute :price
|
14
|
+
attribute :addons
|
15
|
+
attribute :network_out
|
16
|
+
attribute :memory
|
17
|
+
attribute :successor
|
18
|
+
attribute :transfer
|
19
|
+
attribute :vcpus
|
20
|
+
|
21
|
+
# Types have an attribute named `class`, which is a reserved word,
|
22
|
+
# so we rename the attribute to `class_name` before initalization
|
23
|
+
# to avoid runtime errors due to overwriting `class`
|
24
|
+
def initialize(attributes = {})
|
25
|
+
cleaned_attributes = attributes.dup
|
26
|
+
cleaned_attributes[:class_name] = cleaned_attributes.delete('class')
|
27
|
+
super(cleaned_attributes)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'fog/core/collection'
|
2
|
+
require 'fog/linode/compute/models/type'
|
3
|
+
|
4
|
+
module Fog
|
5
|
+
module Linode
|
6
|
+
class Compute
|
7
|
+
# Collection class for loading Type models from Linode instance type data
|
8
|
+
class Types < Fog::Collection
|
9
|
+
model Type
|
10
|
+
|
11
|
+
def all(options = {})
|
12
|
+
types = service.list_types(options)
|
13
|
+
load types
|
14
|
+
end
|
15
|
+
|
16
|
+
def get(id)
|
17
|
+
type = service.view_type(id)
|
18
|
+
new type
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Fog
|
2
|
+
module Linode
|
3
|
+
class Compute
|
4
|
+
# This class provides the actual implementation for service calls
|
5
|
+
class Real
|
6
|
+
def create_server(options = {})
|
7
|
+
response = request(
|
8
|
+
expects: [200],
|
9
|
+
method: 'POST',
|
10
|
+
path: 'linode/instances',
|
11
|
+
body: Fog::JSON.encode(options),
|
12
|
+
headers: {
|
13
|
+
'Content-Type' => 'application/json'
|
14
|
+
}
|
15
|
+
)
|
16
|
+
|
17
|
+
response.body
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Fog
|
2
|
+
module Linode
|
3
|
+
class Compute
|
4
|
+
# This class provides the actual implementation for service calls
|
5
|
+
class Real
|
6
|
+
def delete_server(id)
|
7
|
+
response = request(
|
8
|
+
expects: [200],
|
9
|
+
method: 'DELETE',
|
10
|
+
path: "linode/instances/#{id}"
|
11
|
+
)
|
12
|
+
response.body
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'fog/linode/paginated_collection'
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module Linode
|
5
|
+
class Compute
|
6
|
+
# This class provides the actual implementation for service calls
|
7
|
+
class Real
|
8
|
+
include PaginatedCollection
|
9
|
+
|
10
|
+
def list_images(options = {})
|
11
|
+
make_paginated_request('images', options)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'fog/linode/paginated_collection'
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module Linode
|
5
|
+
class Compute
|
6
|
+
# This class provides the actual implementation for service calls
|
7
|
+
class Real
|
8
|
+
include PaginatedCollection
|
9
|
+
|
10
|
+
def list_kernels(options = {})
|
11
|
+
make_paginated_request('linode/kernels', options)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Fog
|
2
|
+
module Linode
|
3
|
+
class Compute
|
4
|
+
# This class provides the actual implementation for service calls
|
5
|
+
class Real
|
6
|
+
def list_regions
|
7
|
+
response = request(
|
8
|
+
expects: [200],
|
9
|
+
method: 'GET',
|
10
|
+
path: 'regions'
|
11
|
+
)
|
12
|
+
|
13
|
+
response.body['data']
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'fog/linode/paginated_collection'
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module Linode
|
5
|
+
class Compute
|
6
|
+
# This class provides the actual implementation for service calls
|
7
|
+
class Real
|
8
|
+
include PaginatedCollection
|
9
|
+
|
10
|
+
def list_servers(options = {})
|
11
|
+
make_paginated_request('linode/instances', options)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|