fog-brightbox 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/fog-brightbox.gemspec +28 -0
- data/lib/fog/brightbox/compute/image_selector.rb +45 -0
- data/lib/fog/brightbox/compute/shared.rb +230 -0
- data/lib/fog/brightbox/compute.rb +305 -0
- data/lib/fog/brightbox/core.rb +11 -0
- data/lib/fog/brightbox/models/compute/account.rb +69 -0
- data/lib/fog/brightbox/models/compute/accounts.rb +29 -0
- data/lib/fog/brightbox/models/compute/api_client.rb +37 -0
- data/lib/fog/brightbox/models/compute/api_clients.rb +24 -0
- data/lib/fog/brightbox/models/compute/application.rb +24 -0
- data/lib/fog/brightbox/models/compute/applications.rb +28 -0
- data/lib/fog/brightbox/models/compute/cloud_ip.rb +68 -0
- data/lib/fog/brightbox/models/compute/cloud_ips.rb +34 -0
- data/lib/fog/brightbox/models/compute/collaboration.rb +49 -0
- data/lib/fog/brightbox/models/compute/collaborations.rb +47 -0
- data/lib/fog/brightbox/models/compute/database_server.rb +97 -0
- data/lib/fog/brightbox/models/compute/database_servers.rb +28 -0
- data/lib/fog/brightbox/models/compute/database_snapshot.rb +52 -0
- data/lib/fog/brightbox/models/compute/database_snapshots.rb +24 -0
- data/lib/fog/brightbox/models/compute/database_type.rb +19 -0
- data/lib/fog/brightbox/models/compute/database_types.rb +26 -0
- data/lib/fog/brightbox/models/compute/firewall_policies.rb +29 -0
- data/lib/fog/brightbox/models/compute/firewall_policy.rb +63 -0
- data/lib/fog/brightbox/models/compute/firewall_rule.rb +54 -0
- data/lib/fog/brightbox/models/compute/firewall_rules.rb +24 -0
- data/lib/fog/brightbox/models/compute/flavor.rb +32 -0
- data/lib/fog/brightbox/models/compute/flavors.rb +28 -0
- data/lib/fog/brightbox/models/compute/image.rb +64 -0
- data/lib/fog/brightbox/models/compute/images.rb +28 -0
- data/lib/fog/brightbox/models/compute/load_balancer.rb +107 -0
- data/lib/fog/brightbox/models/compute/load_balancers.rb +28 -0
- data/lib/fog/brightbox/models/compute/server.rb +217 -0
- data/lib/fog/brightbox/models/compute/server_group.rb +94 -0
- data/lib/fog/brightbox/models/compute/server_groups.rb +29 -0
- data/lib/fog/brightbox/models/compute/servers.rb +61 -0
- data/lib/fog/brightbox/models/compute/user.rb +43 -0
- data/lib/fog/brightbox/models/compute/user_collaboration.rb +44 -0
- data/lib/fog/brightbox/models/compute/user_collaborations.rb +31 -0
- data/lib/fog/brightbox/models/compute/users.rb +27 -0
- data/lib/fog/brightbox/models/compute/zone.rb +22 -0
- data/lib/fog/brightbox/models/compute/zones.rb +29 -0
- data/lib/fog/brightbox/oauth2.rb +166 -0
- data/lib/fog/brightbox/requests/compute/accept_user_collaboration.rb +21 -0
- data/lib/fog/brightbox/requests/compute/activate_console_server.rb +21 -0
- data/lib/fog/brightbox/requests/compute/add_listeners_load_balancer.rb +24 -0
- data/lib/fog/brightbox/requests/compute/add_nodes_load_balancer.rb +24 -0
- data/lib/fog/brightbox/requests/compute/add_servers_server_group.rb +34 -0
- data/lib/fog/brightbox/requests/compute/apply_to_firewall_policy.rb +24 -0
- data/lib/fog/brightbox/requests/compute/create_api_client.rb +23 -0
- data/lib/fog/brightbox/requests/compute/create_application.rb +23 -0
- data/lib/fog/brightbox/requests/compute/create_cloud_ip.rb +24 -0
- data/lib/fog/brightbox/requests/compute/create_collaboration.rb +23 -0
- data/lib/fog/brightbox/requests/compute/create_database_server.rb +25 -0
- data/lib/fog/brightbox/requests/compute/create_firewall_policy.rb +26 -0
- data/lib/fog/brightbox/requests/compute/create_firewall_rule.rb +29 -0
- data/lib/fog/brightbox/requests/compute/create_image.rb +30 -0
- data/lib/fog/brightbox/requests/compute/create_load_balancer.rb +26 -0
- data/lib/fog/brightbox/requests/compute/create_server.rb +29 -0
- data/lib/fog/brightbox/requests/compute/create_server_group.rb +23 -0
- data/lib/fog/brightbox/requests/compute/delete_api_client.rb +28 -0
- data/lib/fog/brightbox/requests/compute/delete_application.rb +28 -0
- data/lib/fog/brightbox/requests/compute/delete_cloud_ip.rb +28 -0
- data/lib/fog/brightbox/requests/compute/delete_collaboration.rb +28 -0
- data/lib/fog/brightbox/requests/compute/delete_database_server.rb +26 -0
- data/lib/fog/brightbox/requests/compute/delete_database_snapshot.rb +26 -0
- data/lib/fog/brightbox/requests/compute/delete_firewall_policy.rb +28 -0
- data/lib/fog/brightbox/requests/compute/delete_firewall_rule.rb +28 -0
- data/lib/fog/brightbox/requests/compute/delete_image.rb +28 -0
- data/lib/fog/brightbox/requests/compute/delete_load_balancer.rb +28 -0
- data/lib/fog/brightbox/requests/compute/delete_server.rb +28 -0
- data/lib/fog/brightbox/requests/compute/delete_server_group.rb +28 -0
- data/lib/fog/brightbox/requests/compute/delete_user_collaboration.rb +28 -0
- data/lib/fog/brightbox/requests/compute/get_account.rb +29 -0
- data/lib/fog/brightbox/requests/compute/get_api_client.rb +21 -0
- data/lib/fog/brightbox/requests/compute/get_application.rb +21 -0
- data/lib/fog/brightbox/requests/compute/get_authenticated_user.rb +17 -0
- data/lib/fog/brightbox/requests/compute/get_cloud_ip.rb +21 -0
- data/lib/fog/brightbox/requests/compute/get_collaboration.rb +21 -0
- data/lib/fog/brightbox/requests/compute/get_database_server.rb +19 -0
- data/lib/fog/brightbox/requests/compute/get_database_snapshot.rb +19 -0
- data/lib/fog/brightbox/requests/compute/get_database_type.rb +21 -0
- data/lib/fog/brightbox/requests/compute/get_firewall_policy.rb +21 -0
- data/lib/fog/brightbox/requests/compute/get_firewall_rule.rb +21 -0
- data/lib/fog/brightbox/requests/compute/get_image.rb +21 -0
- data/lib/fog/brightbox/requests/compute/get_interface.rb +21 -0
- data/lib/fog/brightbox/requests/compute/get_load_balancer.rb +21 -0
- data/lib/fog/brightbox/requests/compute/get_scoped_account.rb +15 -0
- data/lib/fog/brightbox/requests/compute/get_server.rb +21 -0
- data/lib/fog/brightbox/requests/compute/get_server_group.rb +21 -0
- data/lib/fog/brightbox/requests/compute/get_server_type.rb +21 -0
- data/lib/fog/brightbox/requests/compute/get_user.rb +29 -0
- data/lib/fog/brightbox/requests/compute/get_user_collaboration.rb +21 -0
- data/lib/fog/brightbox/requests/compute/get_zone.rb +21 -0
- data/lib/fog/brightbox/requests/compute/list_accounts.rb +17 -0
- data/lib/fog/brightbox/requests/compute/list_api_clients.rb +19 -0
- data/lib/fog/brightbox/requests/compute/list_applications.rb +19 -0
- data/lib/fog/brightbox/requests/compute/list_cloud_ips.rb +19 -0
- data/lib/fog/brightbox/requests/compute/list_collaborations.rb +19 -0
- data/lib/fog/brightbox/requests/compute/list_database_servers.rb +17 -0
- data/lib/fog/brightbox/requests/compute/list_database_snapshots.rb +17 -0
- data/lib/fog/brightbox/requests/compute/list_database_types.rb +19 -0
- data/lib/fog/brightbox/requests/compute/list_firewall_policies.rb +19 -0
- data/lib/fog/brightbox/requests/compute/list_images.rb +19 -0
- data/lib/fog/brightbox/requests/compute/list_load_balancers.rb +19 -0
- data/lib/fog/brightbox/requests/compute/list_server_groups.rb +19 -0
- data/lib/fog/brightbox/requests/compute/list_server_types.rb +19 -0
- data/lib/fog/brightbox/requests/compute/list_servers.rb +19 -0
- data/lib/fog/brightbox/requests/compute/list_user_collaborations.rb +19 -0
- data/lib/fog/brightbox/requests/compute/list_users.rb +19 -0
- data/lib/fog/brightbox/requests/compute/list_zones.rb +19 -0
- data/lib/fog/brightbox/requests/compute/map_cloud_ip.rb +24 -0
- data/lib/fog/brightbox/requests/compute/move_servers_server_group.rb +36 -0
- data/lib/fog/brightbox/requests/compute/reject_user_collaboration.rb +21 -0
- data/lib/fog/brightbox/requests/compute/remove_firewall_policy.rb +24 -0
- data/lib/fog/brightbox/requests/compute/remove_listeners_load_balancer.rb +24 -0
- data/lib/fog/brightbox/requests/compute/remove_nodes_load_balancer.rb +24 -0
- data/lib/fog/brightbox/requests/compute/remove_servers_server_group.rb +34 -0
- data/lib/fog/brightbox/requests/compute/resend_collaboration.rb +21 -0
- data/lib/fog/brightbox/requests/compute/reset_ftp_password_account.rb +32 -0
- data/lib/fog/brightbox/requests/compute/reset_ftp_password_scoped_account.rb +18 -0
- data/lib/fog/brightbox/requests/compute/reset_password_database_server.rb +19 -0
- data/lib/fog/brightbox/requests/compute/reset_secret_api_client.rb +25 -0
- data/lib/fog/brightbox/requests/compute/reset_secret_application.rb +21 -0
- data/lib/fog/brightbox/requests/compute/shutdown_server.rb +21 -0
- data/lib/fog/brightbox/requests/compute/snapshot_database_server.rb +19 -0
- data/lib/fog/brightbox/requests/compute/snapshot_server.rb +21 -0
- data/lib/fog/brightbox/requests/compute/start_server.rb +21 -0
- data/lib/fog/brightbox/requests/compute/stop_server.rb +21 -0
- data/lib/fog/brightbox/requests/compute/unmap_cloud_ip.rb +21 -0
- data/lib/fog/brightbox/requests/compute/update_account.rb +61 -0
- data/lib/fog/brightbox/requests/compute/update_api_client.rb +26 -0
- data/lib/fog/brightbox/requests/compute/update_application.rb +26 -0
- data/lib/fog/brightbox/requests/compute/update_cloud_ip.rb +27 -0
- data/lib/fog/brightbox/requests/compute/update_database_server.rb +25 -0
- data/lib/fog/brightbox/requests/compute/update_database_snapshot.rb +26 -0
- data/lib/fog/brightbox/requests/compute/update_firewall_policy.rb +26 -0
- data/lib/fog/brightbox/requests/compute/update_firewall_rule.rb +31 -0
- data/lib/fog/brightbox/requests/compute/update_image.rb +31 -0
- data/lib/fog/brightbox/requests/compute/update_load_balancer.rb +29 -0
- data/lib/fog/brightbox/requests/compute/update_scoped_account.rb +31 -0
- data/lib/fog/brightbox/requests/compute/update_server.rb +28 -0
- data/lib/fog/brightbox/requests/compute/update_server_group.rb +26 -0
- data/lib/fog/brightbox/requests/compute/update_user.rb +29 -0
- data/lib/fog/brightbox/version.rb +5 -0
- data/lib/fog/brightbox.rb +1 -0
- metadata +261 -0
@@ -0,0 +1,69 @@
|
|
1
|
+
require 'fog/core/model'
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module Compute
|
5
|
+
class Brightbox
|
6
|
+
|
7
|
+
class Account < Fog::Model
|
8
|
+
|
9
|
+
identity :id
|
10
|
+
attribute :url
|
11
|
+
attribute :resource_type
|
12
|
+
|
13
|
+
attribute :name
|
14
|
+
attribute :status
|
15
|
+
|
16
|
+
attribute :address_1
|
17
|
+
attribute :address_2
|
18
|
+
attribute :city
|
19
|
+
attribute :county
|
20
|
+
attribute :postcode
|
21
|
+
attribute :country_code
|
22
|
+
attribute :country_name
|
23
|
+
attribute :vat_registration_number
|
24
|
+
attribute :telephone_number
|
25
|
+
attribute :verified_telephone
|
26
|
+
attribute :verified_ip
|
27
|
+
attribute :ram_limit
|
28
|
+
attribute :ram_used
|
29
|
+
attribute :cloud_ips_limit
|
30
|
+
attribute :cloud_ips_used
|
31
|
+
attribute :load_balancers_limit
|
32
|
+
attribute :load_balancers_used
|
33
|
+
attribute :library_ftp_host
|
34
|
+
attribute :library_ftp_user
|
35
|
+
# This is always returned as nil unless after a call to reset_ftp_password
|
36
|
+
attribute :library_ftp_password
|
37
|
+
|
38
|
+
# Boolean flags
|
39
|
+
attribute :valid_credit_card
|
40
|
+
attribute :telephone_verified
|
41
|
+
|
42
|
+
# Times
|
43
|
+
attribute :created_at, :type => :time
|
44
|
+
attribute :verified_at, :type => :time
|
45
|
+
|
46
|
+
# Links - to be replaced
|
47
|
+
attribute :owner_id, :aliases => "owner", :squash => "id"
|
48
|
+
attribute :clients
|
49
|
+
attribute :images
|
50
|
+
attribute :servers
|
51
|
+
attribute :users
|
52
|
+
attribute :zones
|
53
|
+
|
54
|
+
# Resets the account's image library FTP password returning the new value
|
55
|
+
#
|
56
|
+
# @return [String] Newly issue FTP password
|
57
|
+
#
|
58
|
+
def reset_ftp_password
|
59
|
+
requires :identity
|
60
|
+
data = service.reset_ftp_password_account(identity)
|
61
|
+
merge_attributes(data)
|
62
|
+
library_ftp_password
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'fog/core/collection'
|
2
|
+
require 'fog/brightbox/models/compute/account'
|
3
|
+
|
4
|
+
module Fog
|
5
|
+
module Compute
|
6
|
+
class Brightbox
|
7
|
+
|
8
|
+
class Accounts < Fog::Collection
|
9
|
+
|
10
|
+
model Fog::Compute::Brightbox::Account
|
11
|
+
|
12
|
+
def all
|
13
|
+
data = service.list_accounts
|
14
|
+
load(data)
|
15
|
+
end
|
16
|
+
|
17
|
+
def get(identifier)
|
18
|
+
return nil if identifier.nil? || identifier == ""
|
19
|
+
data = service.get_account(identifier)
|
20
|
+
new(data)
|
21
|
+
rescue Excon::Errors::NotFound
|
22
|
+
nil
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Fog
|
2
|
+
module Compute
|
3
|
+
class Brightbox
|
4
|
+
class ApiClient < Fog::Model
|
5
|
+
identity :id
|
6
|
+
attribute :name
|
7
|
+
attribute :description
|
8
|
+
attribute :secret
|
9
|
+
attribute :revoked_at, :type => :time
|
10
|
+
attribute :account_id
|
11
|
+
|
12
|
+
def save
|
13
|
+
raise Fog::Errors::Error.new('Resaving an existing object may create a duplicate') if persisted?
|
14
|
+
options = {
|
15
|
+
:name => name,
|
16
|
+
:description => description
|
17
|
+
}.delete_if { |k, v| v.nil? || v == "" }
|
18
|
+
data = service.create_api_client(options)
|
19
|
+
merge_attributes(data)
|
20
|
+
true
|
21
|
+
end
|
22
|
+
|
23
|
+
def destroy
|
24
|
+
requires :identity
|
25
|
+
service.destroy_api_client(identity)
|
26
|
+
true
|
27
|
+
end
|
28
|
+
|
29
|
+
def reset_secret
|
30
|
+
requires :identity
|
31
|
+
service.reset_secret_api_client(identity)
|
32
|
+
true
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require "fog/core/collection"
|
2
|
+
require "fog/brightbox/models/compute/api_client"
|
3
|
+
|
4
|
+
module Fog
|
5
|
+
module Compute
|
6
|
+
class Brightbox
|
7
|
+
class ApiClients < Fog::Collection
|
8
|
+
model Fog::Compute::Brightbox::ApiClient
|
9
|
+
|
10
|
+
def all
|
11
|
+
data = service.list_api_clients
|
12
|
+
load(data)
|
13
|
+
end
|
14
|
+
|
15
|
+
def get(identifier = nil)
|
16
|
+
data = service.get_api_client(identifier)
|
17
|
+
new(data)
|
18
|
+
rescue Excon::Errors::NotFound
|
19
|
+
nil
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'fog/core/model'
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module Compute
|
5
|
+
class Brightbox
|
6
|
+
class Application < Fog::Model
|
7
|
+
identity :id
|
8
|
+
attribute :url
|
9
|
+
attribute :name
|
10
|
+
attribute :secret
|
11
|
+
|
12
|
+
def save
|
13
|
+
raise Fog::Errors::Error.new('Resaving an existing object may create a duplicate') if persisted?
|
14
|
+
options = {
|
15
|
+
:name => name
|
16
|
+
}.delete_if { |k, v| v.nil? || v == "" }
|
17
|
+
data = service.create_application(options)
|
18
|
+
merge_attributes(data)
|
19
|
+
true
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'fog/core/collection'
|
2
|
+
require 'fog/brightbox/models/compute/application'
|
3
|
+
|
4
|
+
module Fog
|
5
|
+
module Compute
|
6
|
+
class Brightbox
|
7
|
+
|
8
|
+
class Applications < Fog::Collection
|
9
|
+
|
10
|
+
model Fog::Compute::Brightbox::Application
|
11
|
+
|
12
|
+
def all
|
13
|
+
data = service.list_applications
|
14
|
+
load(data)
|
15
|
+
end
|
16
|
+
|
17
|
+
def get(identifier)
|
18
|
+
data = service.get_application(identifier)
|
19
|
+
new(data)
|
20
|
+
rescue Excon::Errors::NotFound
|
21
|
+
nil
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
require 'fog/core/model'
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module Compute
|
5
|
+
class Brightbox
|
6
|
+
|
7
|
+
class CloudIp < Fog::Model
|
8
|
+
|
9
|
+
identity :id
|
10
|
+
attribute :url
|
11
|
+
attribute :resource_type
|
12
|
+
|
13
|
+
attribute :name
|
14
|
+
attribute :status
|
15
|
+
attribute :description
|
16
|
+
|
17
|
+
attribute :reverse_dns
|
18
|
+
attribute :public_ip
|
19
|
+
|
20
|
+
# Links - to be replaced
|
21
|
+
attribute :account_id, :aliases => "account", :squash => "id"
|
22
|
+
attribute :interface_id, :aliases => "interface", :squash => "id"
|
23
|
+
attribute :server_id, :aliases => "server", :squash => "id"
|
24
|
+
attribute :load_balancer, :alias => "load_balancer", :squash => "id"
|
25
|
+
attribute :server_group, :alias => "server_group", :squash => "id"
|
26
|
+
attribute :database_server, :alias => "database_server", :squash => "id"
|
27
|
+
attribute :port_translators
|
28
|
+
attribute :name
|
29
|
+
|
30
|
+
# Attempt to map or point the Cloud IP to the destination resource.
|
31
|
+
#
|
32
|
+
# @param [Object] destination
|
33
|
+
#
|
34
|
+
def map(destination)
|
35
|
+
requires :identity
|
36
|
+
if destination.respond_to?(:mapping_identity)
|
37
|
+
final_destination = destination.mapping_identity
|
38
|
+
elsif destination.respond_to?(:identity)
|
39
|
+
final_destination = destination.identity
|
40
|
+
else
|
41
|
+
final_destination = destination
|
42
|
+
end
|
43
|
+
service.map_cloud_ip(identity, :destination => final_destination)
|
44
|
+
end
|
45
|
+
|
46
|
+
def mapped?
|
47
|
+
status == "mapped"
|
48
|
+
end
|
49
|
+
|
50
|
+
def unmap
|
51
|
+
requires :identity
|
52
|
+
service.unmap_cloud_ip(identity)
|
53
|
+
end
|
54
|
+
|
55
|
+
def destroy
|
56
|
+
requires :identity
|
57
|
+
service.destroy_cloud_ip(identity)
|
58
|
+
end
|
59
|
+
|
60
|
+
def destination_id
|
61
|
+
server_id || load_balancer || server_group || database_server || interface_id
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'fog/core/collection'
|
2
|
+
require 'fog/brightbox/models/compute/cloud_ip'
|
3
|
+
|
4
|
+
module Fog
|
5
|
+
module Compute
|
6
|
+
class Brightbox
|
7
|
+
|
8
|
+
class CloudIps < Fog::Collection
|
9
|
+
|
10
|
+
model Fog::Compute::Brightbox::CloudIp
|
11
|
+
|
12
|
+
def all
|
13
|
+
data = service.list_cloud_ips
|
14
|
+
load(data)
|
15
|
+
end
|
16
|
+
|
17
|
+
def get(identifier)
|
18
|
+
return nil if identifier.nil? || identifier == ""
|
19
|
+
data = service.get_cloud_ip(identifier)
|
20
|
+
new(data)
|
21
|
+
rescue Excon::Errors::NotFound
|
22
|
+
nil
|
23
|
+
end
|
24
|
+
|
25
|
+
def allocate
|
26
|
+
data = service.create_cloud_ip
|
27
|
+
new(data)
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'fog/core/model'
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module Compute
|
5
|
+
class Brightbox
|
6
|
+
class Collaboration < Fog::Model
|
7
|
+
identity :id
|
8
|
+
attribute :status
|
9
|
+
attribute :email
|
10
|
+
attribute :role
|
11
|
+
attribute :role_label
|
12
|
+
attribute :account
|
13
|
+
attribute :user
|
14
|
+
attribute :inviter
|
15
|
+
|
16
|
+
def account_id
|
17
|
+
account['id'] || account[:id]
|
18
|
+
end
|
19
|
+
|
20
|
+
def save
|
21
|
+
raise Fog::Errors::Error.new('Resaving an existing object may create a duplicate') if identity
|
22
|
+
|
23
|
+
options = {
|
24
|
+
:role => role,
|
25
|
+
:email => email
|
26
|
+
}.delete_if { |k, v| v.nil? || v == "" }
|
27
|
+
|
28
|
+
data = service.create_collaboration(options)
|
29
|
+
merge_attributes(data)
|
30
|
+
true
|
31
|
+
end
|
32
|
+
|
33
|
+
def resend
|
34
|
+
requires :identity
|
35
|
+
data = service.resend_collaboration(identity)
|
36
|
+
merge_attributes(data)
|
37
|
+
true
|
38
|
+
end
|
39
|
+
|
40
|
+
def destroy
|
41
|
+
requires :identity
|
42
|
+
data = service.destroy_collaboration(identity)
|
43
|
+
merge_attributes(data)
|
44
|
+
true
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require "fog/core/collection"
|
2
|
+
require "fog/brightbox/models/compute/collaboration"
|
3
|
+
|
4
|
+
module Fog
|
5
|
+
module Compute
|
6
|
+
class Brightbox
|
7
|
+
class Collaborations < Fog::Collection
|
8
|
+
model Fog::Compute::Brightbox::Collaboration
|
9
|
+
|
10
|
+
def all
|
11
|
+
data = service.list_collaborations
|
12
|
+
load(data)
|
13
|
+
end
|
14
|
+
|
15
|
+
def get(identifier)
|
16
|
+
return nil if identifier.nil? || identifier == ""
|
17
|
+
data = service.get_collaboration(identifier)
|
18
|
+
new(data)
|
19
|
+
rescue Excon::Errors::NotFound
|
20
|
+
nil
|
21
|
+
end
|
22
|
+
|
23
|
+
# Invites a user (via an email) to collaborate on the currently scoped
|
24
|
+
# account at the +role+ level.
|
25
|
+
#
|
26
|
+
# @param [String] email The email address to use for the invitation
|
27
|
+
# @param [String] role The role being granted. Only (+admin+ is
|
28
|
+
# currently supported
|
29
|
+
# @return [Fog::Compute::Brightbox::Collaboration]
|
30
|
+
#
|
31
|
+
def invite(email, role)
|
32
|
+
return nil if email.nil? || email == ""
|
33
|
+
return nil if role.nil? || role == ""
|
34
|
+
options = { :email => email, :role => role }
|
35
|
+
data = service.create_collaboration(options)
|
36
|
+
new(data)
|
37
|
+
end
|
38
|
+
|
39
|
+
def destroy
|
40
|
+
requires :identity
|
41
|
+
service.destroy_collaboration(identity)
|
42
|
+
true
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,97 @@
|
|
1
|
+
require 'fog/core/model'
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module Compute
|
5
|
+
class Brightbox
|
6
|
+
class DatabaseServer < Fog::Model
|
7
|
+
identity :id
|
8
|
+
attribute :url
|
9
|
+
attribute :resource_type
|
10
|
+
|
11
|
+
attribute :name
|
12
|
+
attribute :description
|
13
|
+
attribute :state, :aliases => "status"
|
14
|
+
|
15
|
+
attribute :admin_username
|
16
|
+
attribute :admin_password
|
17
|
+
|
18
|
+
attribute :database_engine
|
19
|
+
attribute :database_version
|
20
|
+
|
21
|
+
attribute :maintenance_weekday
|
22
|
+
attribute :maintenance_hour
|
23
|
+
|
24
|
+
attribute :created_at, :type => :time
|
25
|
+
attribute :updated_at, :type => :time
|
26
|
+
attribute :deleted_at, :type => :time
|
27
|
+
|
28
|
+
attribute :allow_access
|
29
|
+
|
30
|
+
attribute :flavor_id, "alias" => "database_server_type", :squash => "id"
|
31
|
+
attribute :zone_id, "alias" => "zone", :squash => "id"
|
32
|
+
|
33
|
+
attribute :cloud_ips
|
34
|
+
|
35
|
+
def save
|
36
|
+
options = {
|
37
|
+
:name => name,
|
38
|
+
:description => description
|
39
|
+
}
|
40
|
+
|
41
|
+
options[:allow_access] = allow_access if allow_access
|
42
|
+
|
43
|
+
# These may be nil which sets them to default values upstream
|
44
|
+
# TODO: Dirty track the values so we don't send them when already nil
|
45
|
+
options[:maintenance_weekday] = maintenance_weekday
|
46
|
+
options[:maintenance_hour] = maintenance_hour
|
47
|
+
|
48
|
+
if persisted?
|
49
|
+
data = update_database_server(options)
|
50
|
+
else
|
51
|
+
options[:engine] = database_engine if database_engine
|
52
|
+
options[:version] = database_version if database_version
|
53
|
+
options[:database_type] = flavor_id if flavor_id
|
54
|
+
options[:zone] = zone_id if zone_id
|
55
|
+
|
56
|
+
data = create_database_server(options)
|
57
|
+
end
|
58
|
+
|
59
|
+
merge_attributes(data)
|
60
|
+
true
|
61
|
+
end
|
62
|
+
|
63
|
+
def ready?
|
64
|
+
state == "active"
|
65
|
+
end
|
66
|
+
|
67
|
+
def snapshot
|
68
|
+
requires :identity
|
69
|
+
merge_attributes(service.snapshot_database_server(identity))
|
70
|
+
true
|
71
|
+
end
|
72
|
+
|
73
|
+
def destroy
|
74
|
+
requires :identity
|
75
|
+
merge_attributes(service.destroy_database_server(identity))
|
76
|
+
true
|
77
|
+
end
|
78
|
+
|
79
|
+
def reset_password
|
80
|
+
requires :identity
|
81
|
+
merge_attributes(service.reset_password_database_server(identity))
|
82
|
+
true
|
83
|
+
end
|
84
|
+
|
85
|
+
private
|
86
|
+
|
87
|
+
def create_database_server(options)
|
88
|
+
service.create_database_server(options)
|
89
|
+
end
|
90
|
+
|
91
|
+
def update_database_server(options)
|
92
|
+
service.update_database_server(identity, options)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|