squall 1.3.0 → 1.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE +1 -1
- data/README.md +64 -41
- data/Rakefile +3 -9
- data/lib/squall/data_store_zone.rb +20 -26
- data/lib/squall/disk.rb +174 -0
- data/lib/squall/firewall_rule.rb +34 -41
- data/lib/squall/hypervisor.rb +40 -38
- data/lib/squall/hypervisor_zone.rb +51 -63
- data/lib/squall/ip_address.rb +32 -37
- data/lib/squall/ip_address_join.rb +13 -22
- data/lib/squall/network.rb +36 -33
- data/lib/squall/network_zone.rb +27 -29
- data/lib/squall/payment.rb +22 -32
- data/lib/squall/role.rb +30 -37
- data/lib/squall/statistic.rb +3 -1
- data/lib/squall/support/base.rb +35 -31
- data/lib/squall/support/config.rb +25 -1
- data/lib/squall/support/version.rb +1 -1
- data/lib/squall/template.rb +7 -5
- data/lib/squall/transaction.rb +6 -4
- data/lib/squall/user.rb +84 -83
- data/lib/squall/user_group.rb +17 -30
- data/lib/squall/virtual_machine.rb +154 -178
- data/lib/squall/whitelist.rb +29 -40
- data/lib/squall.rb +27 -25
- data/spec/spec_helper.rb +6 -11
- data/spec/squall/data_store_zone_spec.rb +2 -20
- data/spec/squall/disk_spec.rb +189 -0
- data/spec/squall/firewall_rule_spec.rb +2 -32
- data/spec/squall/hypervisor_spec.rb +3 -47
- data/spec/squall/hypervisor_zone_spec.rb +3 -28
- data/spec/squall/ip_address_join_spec.rb +1 -15
- data/spec/squall/ip_address_spec.rb +10 -35
- data/spec/squall/network_spec.rb +20 -31
- data/spec/squall/network_zone_spec.rb +2 -36
- data/spec/squall/payment_spec.rb +2 -21
- data/spec/squall/role_spec.rb +4 -16
- data/spec/squall/support/base_spec.rb +10 -16
- data/spec/squall/template_spec.rb +0 -4
- data/spec/squall/transaction_spec.rb +1 -3
- data/spec/squall/user_group_spec.rb +1 -17
- data/spec/squall/user_spec.rb +4 -92
- data/spec/squall/virtual_machine_spec.rb +8 -242
- data/spec/squall/whitelist_spec.rb +2 -40
- data/spec/squall_spec.rb +2 -2
- data/spec/vcr_cassettes/disk/add_schedule.yml +40 -0
- data/spec/vcr_cassettes/disk/auto_backup_off.yml +40 -0
- data/spec/vcr_cassettes/disk/auto_backup_on.yml +40 -0
- data/spec/vcr_cassettes/disk/backups.yml +40 -0
- data/spec/vcr_cassettes/disk/build.yml +40 -0
- data/spec/vcr_cassettes/disk/create.yml +40 -0
- data/spec/vcr_cassettes/disk/delete.yml +38 -0
- data/spec/vcr_cassettes/disk/edit.yml +40 -0
- data/spec/vcr_cassettes/disk/iops_usage.yml +40 -0
- data/spec/vcr_cassettes/disk/list.yml +40 -0
- data/spec/vcr_cassettes/disk/migrate.yml +38 -0
- data/spec/vcr_cassettes/disk/schedules.yml +40 -0
- data/spec/vcr_cassettes/disk/unlock.yml +40 -0
- data/spec/vcr_cassettes/disk/vm_disk_list.yml +40 -0
- data/spec/vcr_cassettes/network/rebuild.yml +41 -0
- metadata +217 -66
- data/.gitignore +0 -13
- data/.rspec +0 -2
- data/.rvmrc +0 -41
- data/.travis.yml +0 -17
- data/lib/squall/support/params.rb +0 -50
- data/lib/squall/support/yaml.rb +0 -5
- data/spec/squall/support/params_spec.rb +0 -195
- data/squall.gemspec +0 -32
data/lib/squall/hypervisor.rb
CHANGED
@@ -1,110 +1,112 @@
|
|
1
1
|
module Squall
|
2
2
|
# OnApp Hypervisor
|
3
3
|
class Hypervisor < Base
|
4
|
-
|
5
|
-
#
|
4
|
+
# Public: Lists all hypervisors.
|
5
|
+
#
|
6
|
+
# Returns an Array.
|
6
7
|
def list
|
7
8
|
req = request(:get, '/settings/hypervisors.json')
|
8
9
|
req.collect { |hv| hv['hypervisor'] }
|
9
10
|
end
|
10
11
|
|
11
|
-
#
|
12
|
+
# Public: Retrieves hypervisor info.
|
12
13
|
#
|
13
|
-
#
|
14
|
+
# id - The id of the hypervisor
|
14
15
|
#
|
15
|
-
#
|
16
|
+
# Returns a Hash.
|
16
17
|
def show(id)
|
17
18
|
req = request(:get, "/settings/hypervisors/#{id}.json")
|
18
19
|
req.first[1]
|
19
20
|
end
|
20
21
|
|
21
|
-
# Create a new Hypervisor
|
22
|
-
#
|
23
|
-
# ==== Params
|
22
|
+
# Public: Create a new Hypervisor.
|
24
23
|
#
|
25
|
-
#
|
24
|
+
# options - Options for creating the hypervisor:
|
25
|
+
# :label - Label for the hypervisor
|
26
|
+
# :ip_address - IP for the hypervisor
|
27
|
+
# :hypervisor_type - Type of the hypervisor
|
26
28
|
#
|
27
|
-
#
|
29
|
+
# Example
|
28
30
|
#
|
29
|
-
#
|
30
|
-
#
|
31
|
-
#
|
31
|
+
# create(
|
32
|
+
# label: 'myhv',
|
33
|
+
# ip_address: '127.0.0.1',
|
34
|
+
# hypervisor_type: 'xen'
|
35
|
+
# )
|
32
36
|
#
|
33
|
-
#
|
34
|
-
#
|
35
|
-
# create :label => 'myhv', :ip_address => '127.0.0.1', :hypervisor_type => 'xen'
|
37
|
+
# Returns a Hash.
|
36
38
|
def create(options = {})
|
37
|
-
params.required(:label, :ip_address, :hypervisor_type).accepts(:memory_overhead, :enabled, :hypervisor_group_id, :disable_failover).validate!(options)
|
38
39
|
req = request(:post, '/settings/hypervisors.json', default_params(options))
|
39
40
|
req.first[1]
|
40
41
|
end
|
41
42
|
|
42
|
-
# Edit a Hypervisor
|
43
|
-
#
|
44
|
-
# ==== Params
|
45
|
-
#
|
46
|
-
# * +id*+ - ID of the hypervisor
|
47
|
-
# * +options+ - Params for editing the Hypervisor
|
43
|
+
# Public: Edit a Hypervisor.
|
48
44
|
#
|
49
|
-
#
|
45
|
+
# id - ID of the hypervisor
|
46
|
+
# options - Params for editing the Hypervisor, see `#create`.
|
50
47
|
#
|
51
|
-
#
|
48
|
+
# Example
|
52
49
|
#
|
53
|
-
#
|
50
|
+
# edit 1, label: 'myhv', ip_address: '127.0.0.1'
|
54
51
|
#
|
55
|
-
#
|
56
|
-
def edit(id, options ={})
|
57
|
-
params.accepts(:label, :ip_address, :hypervisor_type, :memory_overhead, :enabled, :hypervisor_group_id, :disable_failover).validate!(options)
|
52
|
+
# Returns a Hash.
|
53
|
+
def edit(id, options = {})
|
58
54
|
request(:put, "/settings/hypervisors/#{id}.json", default_params(options))
|
59
55
|
end
|
60
56
|
|
61
|
-
# Reboot a hypervisor
|
57
|
+
# Public: Reboot a hypervisor.
|
62
58
|
#
|
63
|
-
#
|
59
|
+
# id - ID of the hypervisor
|
64
60
|
#
|
65
|
-
#
|
61
|
+
# Returns a Hash.
|
66
62
|
def reboot(id)
|
67
63
|
response = request(:get, "/settings/hypervisors/#{id}/rebooting.json")
|
68
64
|
response['hypervisor']
|
69
65
|
end
|
70
66
|
|
71
|
-
# Delete a hypervisor
|
67
|
+
# Public: Delete a hypervisor
|
72
68
|
#
|
73
|
-
#
|
69
|
+
# id - ID of the hypervisor
|
74
70
|
#
|
75
|
-
#
|
71
|
+
# Returns a Hash.
|
76
72
|
def delete(id)
|
77
73
|
req = request(:delete, "/settings/hypervisors/#{id}.json")
|
78
74
|
end
|
79
75
|
|
76
|
+
# TODO: Add documentation
|
80
77
|
def virtual_machines(id)
|
81
78
|
response = request(:get, "/settings/hypervisors/#{id}/virtual_machines.json")
|
82
79
|
response.collect { |vm| vm['virtual_machine'] }
|
83
80
|
end
|
84
81
|
|
82
|
+
# TODO: Add documentation
|
85
83
|
def data_store_joins(id)
|
86
84
|
response = request(:get, "/settings/hypervisors/#{id}/data_store_joins.json")
|
87
85
|
response.collect { |dsj| dsj['data_store_join'] }
|
88
86
|
end
|
89
87
|
|
88
|
+
# TODO: Add documentation
|
90
89
|
def add_data_store_join(id, data_store_id)
|
91
|
-
request(:post, "/settings/hypervisors/#{id}/data_store_joins.json", :
|
90
|
+
request(:post, "/settings/hypervisors/#{id}/data_store_joins.json", query: { data_store_id: data_store_id })
|
92
91
|
end
|
93
92
|
|
93
|
+
# TODO: Add documentation
|
94
94
|
def remove_data_store_join(id, data_store_join_id)
|
95
95
|
request(:delete, "/settings/hypervisors/#{id}/data_store_joins/#{data_store_join_id}.json")
|
96
96
|
end
|
97
97
|
|
98
|
+
# TODO: Add documentation
|
98
99
|
def network_joins(id)
|
99
100
|
response = request(:get, "/settings/hypervisors/#{id}/network_joins.json")
|
100
101
|
response.collect { |nj| nj['network_join'] }
|
101
102
|
end
|
102
103
|
|
104
|
+
# TODO: Add documentation
|
103
105
|
def add_network_join(id, options)
|
104
|
-
|
105
|
-
request(:post, "/settings/hypervisors/#{id}/network_joins.json", :query => {:network_join => options})
|
106
|
+
request(:post, "/settings/hypervisors/#{id}/network_joins.json", query: { network_join: options })
|
106
107
|
end
|
107
108
|
|
109
|
+
# TODO: Add documentation
|
108
110
|
def remove_network_join(id, network_join_id)
|
109
111
|
request(:delete, "/settings/hypervisors/#{id}/network_joins/#{network_join_id}.json")
|
110
112
|
end
|
@@ -1,135 +1,123 @@
|
|
1
1
|
module Squall
|
2
2
|
# OnApp HypervisorZone
|
3
3
|
class HypervisorZone < Base
|
4
|
-
#
|
4
|
+
# Public: Lists all hypervisor zones.
|
5
|
+
#
|
6
|
+
# Returns an Array.
|
5
7
|
def list
|
6
8
|
response = request(:get, "/settings/hypervisor_zones.json")
|
7
9
|
response.collect { |i| i['hypervisor_group'] }
|
8
10
|
end
|
9
11
|
|
10
|
-
# Get the details for a hypervisor zone
|
12
|
+
# Public: Get the details for a hypervisor zone.
|
11
13
|
#
|
12
|
-
#
|
14
|
+
# id - ID of the hypervisor zone
|
13
15
|
#
|
14
|
-
#
|
16
|
+
# Returns a Hash.
|
15
17
|
def show(id)
|
16
18
|
response = request(:get, "/settings/hypervisor_zones/#{id}.json")
|
17
19
|
response['hypervisor_group']
|
18
20
|
end
|
19
21
|
|
20
|
-
#
|
21
|
-
#
|
22
|
-
# ==== Params
|
23
|
-
#
|
24
|
-
# * +id*+ - ID of the hypervisor zone
|
25
|
-
# * +options+ - Params for updating the hypervisor zone
|
22
|
+
# Public: Creates a new hypervisor zone.
|
26
23
|
#
|
27
|
-
#
|
24
|
+
# options - Params for updating the hypervisor zone:
|
25
|
+
# :label - Label for the hypervisor zone
|
28
26
|
#
|
29
|
-
#
|
30
|
-
def
|
31
|
-
|
32
|
-
response = request(:put, "/settings/hypervisor_zones/#{id}.json", :query => {:pack => options})
|
27
|
+
# Returns a Hash
|
28
|
+
def create(options = {})
|
29
|
+
request(:post, "/settings/hypervisor_zones.json", query: { pack: options })
|
33
30
|
end
|
34
31
|
|
35
|
-
#
|
36
|
-
#
|
37
|
-
# ==== Params
|
32
|
+
# Public: Updates an existing hypervisor zone.
|
38
33
|
#
|
39
|
-
#
|
34
|
+
# id - ID of the hypervisor zone
|
35
|
+
# options - Params for updating the hypervisor zone, see `#create`
|
40
36
|
#
|
41
|
-
#
|
42
|
-
|
43
|
-
|
44
|
-
def create(options = {})
|
45
|
-
params.required(:label).validate!(options)
|
46
|
-
response = request(:post, "/settings/hypervisor_zones.json", :query => {:pack => options})
|
37
|
+
# Returns a Hash.
|
38
|
+
def edit(id, options = {})
|
39
|
+
request(:put, "/settings/hypervisor_zones/#{id}.json", query: { pack: options })
|
47
40
|
end
|
48
41
|
|
49
|
-
# Deletes an existing hypervisor zone
|
42
|
+
# Public: Deletes an existing hypervisor zone.
|
50
43
|
#
|
51
|
-
#
|
44
|
+
# id - ID of the hypervisor zone
|
52
45
|
#
|
53
|
-
#
|
46
|
+
# Returns a Hash.
|
54
47
|
def delete(id)
|
55
48
|
request(:delete, "/settings/hypervisor_zones/#{id}.json")
|
56
49
|
end
|
57
50
|
|
58
|
-
#
|
51
|
+
# Public: List hypervisors attached to a zone.
|
59
52
|
#
|
60
|
-
#
|
53
|
+
# id - ID of the hypervisor zone
|
61
54
|
#
|
62
|
-
#
|
55
|
+
# Returns an Array.
|
63
56
|
def hypervisors(id)
|
64
57
|
response = request(:get, "/settings/hypervisor_zones/#{id}/hypervisors.json")
|
65
58
|
response.collect { |hv| hv['hypervisor'] }
|
66
59
|
end
|
67
60
|
|
68
|
-
#
|
61
|
+
# Public: List data store joins attached to a hypervisor zone.
|
69
62
|
#
|
70
|
-
#
|
63
|
+
# id - ID of the hypervisor zone
|
71
64
|
#
|
72
|
-
#
|
65
|
+
# Returns an Array.
|
73
66
|
def data_store_joins(id)
|
74
67
|
response = request(:get, "/settings/hypervisor_zones/#{id}/data_store_joins.json")
|
75
68
|
response.collect { |i| i['data_store_join'] }
|
76
69
|
end
|
77
70
|
|
78
|
-
# Add a data store to a hypervisor zone
|
71
|
+
# Public: Add a data store to a hypervisor zone.
|
79
72
|
#
|
80
|
-
#
|
73
|
+
# id - ID of the hypervisor zone
|
74
|
+
# data_store_id - ID of the data store
|
81
75
|
#
|
82
|
-
#
|
83
|
-
# * +data_store_id*+ - ID of the data store
|
76
|
+
# Returns a Hash.
|
84
77
|
def add_data_store_join(id, data_store_id)
|
85
|
-
request(:post, "/settings/hypervisor_zones/#{id}/data_store_joins.json", :
|
78
|
+
request(:post, "/settings/hypervisor_zones/#{id}/data_store_joins.json", query: { data_store_id: data_store_id })
|
86
79
|
end
|
87
80
|
|
88
|
-
# Remove a data store from a hypervisor zone
|
81
|
+
# Public: Remove a data store from a hypervisor zone.
|
89
82
|
#
|
90
|
-
#
|
83
|
+
# id - ID of the hypervisor zone
|
84
|
+
# data_store_join_id - ID of the join record
|
91
85
|
#
|
92
|
-
#
|
93
|
-
# * +data_store_join_id*+ - ID of the join record
|
86
|
+
# Returns a Hash.
|
94
87
|
def remove_data_store_join(id, data_store_join_id)
|
95
88
|
request(:delete, "/settings/hypervisor_zones/#{id}/data_store_joins/#{data_store_join_id}.json")
|
96
89
|
end
|
97
90
|
|
98
|
-
#
|
91
|
+
# Public: List networks attached to a hypervisor zone.
|
99
92
|
#
|
100
|
-
#
|
93
|
+
# id - ID of the hypervisor zone
|
101
94
|
#
|
102
|
-
#
|
95
|
+
# Returns an Array.
|
103
96
|
def network_joins(id)
|
104
97
|
response = request(:get, "/settings/hypervisor_zones/#{id}/network_joins.json")
|
105
98
|
response.collect { |i| i['network_join'] }
|
106
99
|
end
|
107
100
|
|
108
|
-
# Add a network to a hypervisor zone
|
101
|
+
# Public: Add a network to a hypervisor zone
|
109
102
|
#
|
110
|
-
#
|
103
|
+
# id - ID of the hypervisor zone
|
104
|
+
# options - Params for updating the hypervisor zone
|
105
|
+
# :network_id - ID of the network to add to the hypervisor zone
|
106
|
+
# :interface - Name of the appropriate network interface
|
111
107
|
#
|
112
|
-
#
|
113
|
-
|
114
|
-
|
115
|
-
# ==== Options
|
116
|
-
#
|
117
|
-
# * +network_id*+ - The ID of the network to add to the hypervisor zone
|
118
|
-
# * +interface*+ - The name of the appropriate network interface
|
119
|
-
def add_network_join(id, options={})
|
120
|
-
params.required(:network_id, :interface).validate!(options)
|
121
|
-
request(:post, "/settings/hypervisor_zones/#{id}/network_joins.json", :query => {:network_join => options})
|
108
|
+
# Returns a Hash.
|
109
|
+
def add_network_join(id, options = {})
|
110
|
+
request(:post, "/settings/hypervisor_zones/#{id}/network_joins.json", query: { network_join: options })
|
122
111
|
end
|
123
112
|
|
124
|
-
# Remove a network from a hypervisor zone
|
113
|
+
# Public: Remove a network from a hypervisor zone.
|
125
114
|
#
|
126
|
-
#
|
115
|
+
# id - ID of the hypervisor zone
|
116
|
+
# network_join_id - ID of the join record
|
127
117
|
#
|
128
|
-
#
|
129
|
-
# * +network_join_id*+ - ID of the join record
|
118
|
+
# Returns a Hash.
|
130
119
|
def remove_network_join(id, network_join_id)
|
131
120
|
request(:delete, "/settings/hypervisor_zones/#{id}/network_joins/#{network_join_id}.json")
|
132
121
|
end
|
133
|
-
|
134
122
|
end
|
135
123
|
end
|
data/lib/squall/ip_address.rb
CHANGED
@@ -1,58 +1,53 @@
|
|
1
1
|
module Squall
|
2
2
|
# OnApp IpAddress
|
3
3
|
class IpAddress < Base
|
4
|
-
#
|
4
|
+
# Public: Lists IP addresses for a network.
|
5
5
|
#
|
6
|
-
#
|
6
|
+
# network_id - ID of the network
|
7
7
|
#
|
8
|
-
#
|
8
|
+
# Returns an Array.
|
9
9
|
def list(network_id)
|
10
10
|
response = request(:get, "/settings/networks/#{network_id}/ip_addresses.json")
|
11
11
|
response.collect { |ip| ip['ip_address'] }
|
12
12
|
end
|
13
13
|
|
14
|
-
#
|
15
|
-
#
|
16
|
-
#
|
17
|
-
#
|
18
|
-
#
|
19
|
-
#
|
20
|
-
#
|
21
|
-
#
|
22
|
-
#
|
23
|
-
#
|
24
|
-
#
|
25
|
-
|
26
|
-
|
27
|
-
|
14
|
+
# Public: Creates a new IpAddress
|
15
|
+
#
|
16
|
+
# network_id - ID of the network
|
17
|
+
# options - Params for the new ip address
|
18
|
+
# :address - IP address
|
19
|
+
# :broadcast - A logical address at which all devices
|
20
|
+
# connected to a multiple-access
|
21
|
+
# communications network are enabled to
|
22
|
+
# receive datagrams
|
23
|
+
# :disallowed_primary - Set to '1' to prevent this address
|
24
|
+
# being used as primary
|
25
|
+
# :gateway - Gateway address
|
26
|
+
# :netmask - Network mask
|
27
|
+
# :network_address - IP address of network
|
28
|
+
#
|
29
|
+
# Returns a Hash.
|
30
|
+
def create(network_id, options = {})
|
31
|
+
request(:post, "/settings/networks/#{network_id}/ip_addresses.json", default_params(options))
|
28
32
|
end
|
29
33
|
|
30
|
-
#
|
31
|
-
#
|
32
|
-
# ==== Params
|
33
|
-
#
|
34
|
-
# * +network_id+ - ID of the network
|
35
|
-
# * +options+ - Params for the new ip address
|
34
|
+
# Public: Updates an existing ip address.
|
36
35
|
#
|
37
|
-
#
|
36
|
+
# network_id - ID of the network
|
37
|
+
# id - ID of the ip address
|
38
|
+
# options - Params for updating the ip address, see `#create`
|
38
39
|
#
|
39
|
-
#
|
40
|
-
|
41
|
-
|
42
|
-
# * +network_address*+ - IP address of network
|
43
|
-
# * +gateway*+ - Gateway address
|
44
|
-
# * +disallowed_primary+ - Set to '1' to prevent this address being used as primary
|
45
|
-
def create(network_id, options = {})
|
46
|
-
params.required(:address, :netmask, :broadcast, :network_address, :gateway).accepts(:disallowed_primary).validate!(options)
|
47
|
-
response = request(:post, "/settings/networks/#{network_id}/ip_addresses.json", default_params(options))
|
40
|
+
# Returns a Hash.
|
41
|
+
def edit(network_id, id, options = {})
|
42
|
+
request(:put, "/settings/networks/#{network_id}/ip_addresses/#{id}.json", default_params(options))
|
48
43
|
end
|
49
44
|
|
50
|
-
# Deletes an existing ip address
|
45
|
+
# Public: Deletes an existing ip address.
|
51
46
|
#
|
52
|
-
#
|
47
|
+
# network_id - ID of the network
|
48
|
+
# id - ID of the ip address
|
53
49
|
#
|
54
|
-
#
|
55
|
-
# * +id+ - ID of the ip address
|
50
|
+
# Returns a Hash.
|
56
51
|
def delete(network_id, id)
|
57
52
|
request(:delete, "/settings/networks/#{network_id}/ip_addresses/#{id}.json")
|
58
53
|
end
|
@@ -1,44 +1,35 @@
|
|
1
1
|
module Squall
|
2
2
|
# Handles IP assignments for virtual machines
|
3
3
|
class IpAddressJoin < Base
|
4
|
-
|
5
|
-
# Get the list of IP address assignments for a particular virtual machine
|
4
|
+
# Public: List IP address assignments for a virtual machine.
|
6
5
|
#
|
7
|
-
#
|
6
|
+
# virtual_machine_id - Virtual machine ID to lookup
|
8
7
|
#
|
9
|
-
#
|
8
|
+
# Returns an Array.
|
10
9
|
def list(virtual_machine_id)
|
11
10
|
response = request(:get, "/virtual_machines/#{virtual_machine_id}/ip_addresses.json")
|
12
11
|
response.collect { |ip| ip['ip_address_join'] }
|
13
12
|
end
|
14
13
|
|
15
|
-
# Assigns an IP address to a VM
|
16
|
-
#
|
17
|
-
# ==== Params
|
18
|
-
#
|
19
|
-
# * +virtual_machine_id*+ - Virtual machine ID to assign IP to
|
20
|
-
# * +options+ - Params for IP assignment
|
14
|
+
# Public: Assigns an IP address to a VM.
|
21
15
|
#
|
22
|
-
#
|
16
|
+
# virtual_machine_id - Virtual machine ID to assign IP to
|
17
|
+
# options - Params for IP assignment:
|
18
|
+
# :ip_address_id - ID of the IP address
|
19
|
+
# :network_interface_id - ID of the network interface
|
23
20
|
#
|
24
|
-
#
|
25
|
-
# * +network_interface_id*+ - ID of the network interface id
|
21
|
+
# Returns a Hash.
|
26
22
|
def assign(virtual_machine_id, options = {})
|
27
|
-
params.required(:ip_address_id, :network_interface_id).validate!(options)
|
28
23
|
response = request(:post, "/virtual_machines/#{virtual_machine_id}/ip_addresses.json", default_params(options))
|
29
24
|
response['ip_address_join']
|
30
25
|
end
|
31
26
|
|
32
|
-
# Deletes an IP address assignment from a VM
|
33
|
-
#
|
34
|
-
# ==== Params
|
35
|
-
#
|
36
|
-
# * +virtual_machine_id+ - Virtual machine ID to remove IP join from
|
37
|
-
# * +ip_address_id+ - IP Address ID to remove
|
27
|
+
# Public: Deletes an IP address assignment from a VM
|
38
28
|
#
|
39
|
-
#
|
29
|
+
# virtual_machine_id - Virtual machine ID to remove IP join from
|
30
|
+
# ip_address_id - IP Address ID to remove, see `#assign`.
|
40
31
|
#
|
41
|
-
#
|
32
|
+
# Returns a Hash.
|
42
33
|
def delete(virtual_machine_id, ip_address_id)
|
43
34
|
request(:delete, "/virtual_machines/#{virtual_machine_id}/ip_addresses/#{ip_address_id}.json")
|
44
35
|
end
|
data/lib/squall/network.rb
CHANGED
@@ -1,59 +1,62 @@
|
|
1
1
|
module Squall
|
2
2
|
# OnApp Network
|
3
3
|
class Network < Base
|
4
|
-
#
|
4
|
+
# Public: Lists all networks.
|
5
|
+
#
|
6
|
+
# Returns an Array.
|
5
7
|
def list
|
6
8
|
response = request(:get, '/settings/networks.json')
|
7
9
|
response.collect { |network| network['network'] }
|
8
10
|
end
|
9
11
|
|
10
|
-
#
|
12
|
+
# Public: Create a Network.
|
11
13
|
#
|
12
|
-
#
|
14
|
+
# options - Params for creating the Network:
|
15
|
+
# :label
|
16
|
+
# :vlan
|
17
|
+
# :identifier
|
13
18
|
#
|
14
|
-
#
|
15
|
-
# * +options+ - Params for editing the Network
|
19
|
+
# Example
|
16
20
|
#
|
17
|
-
#
|
21
|
+
# create(
|
22
|
+
# label: 'mynetwork',
|
23
|
+
# network_group_id: 1,
|
24
|
+
# vlan: 2,
|
25
|
+
# identifier: 'something'
|
26
|
+
# )
|
18
27
|
#
|
19
|
-
#
|
28
|
+
# Returns a Hash.
|
29
|
+
def create(options = {})
|
30
|
+
response = request(:post, '/settings/networks.json', default_params(options))
|
31
|
+
response.first[1]
|
32
|
+
end
|
33
|
+
|
34
|
+
# Public: Edit a Network
|
20
35
|
#
|
21
|
-
#
|
36
|
+
# id - ID of the network
|
37
|
+
# options - Params for editing the Network, see `#create`
|
22
38
|
#
|
23
|
-
#
|
39
|
+
# Returns a Hash.
|
24
40
|
def edit(id, options = {})
|
25
|
-
|
26
|
-
response = request(:put, "/settings/networks/#{id}.json", default_params(options))
|
41
|
+
request(:put, "/settings/networks/#{id}.json", default_params(options))
|
27
42
|
end
|
28
43
|
|
29
|
-
#
|
30
|
-
#
|
31
|
-
# ==== Params
|
32
|
-
#
|
33
|
-
# * +options+ - Params for creating the Network
|
34
|
-
#
|
35
|
-
# ==== Options
|
44
|
+
# Public: Delete a network.
|
36
45
|
#
|
37
|
-
#
|
38
|
-
# * +vlan+
|
39
|
-
# * +identifier+
|
46
|
+
# id - ID of the network
|
40
47
|
#
|
41
|
-
#
|
42
|
-
|
43
|
-
|
44
|
-
def create(options = {})
|
45
|
-
params.accepts(:vlan, :identifier).required(:label).validate!(options)
|
46
|
-
response = request(:post, '/settings/networks.json', default_params(options))
|
47
|
-
response.first[1]
|
48
|
+
# Returns a Hash.
|
49
|
+
def delete(id)
|
50
|
+
request(:delete, "/settings/networks/#{id}.json")
|
48
51
|
end
|
49
52
|
|
50
|
-
#
|
53
|
+
# Public: Rebuild VM network.
|
51
54
|
#
|
52
|
-
#
|
55
|
+
# id - ID of the virtual machine
|
53
56
|
#
|
54
|
-
#
|
55
|
-
def
|
56
|
-
request(:
|
57
|
+
# Returns a Hash.
|
58
|
+
def rebuild(id)
|
59
|
+
request(:post, "/virtual_machines/#{id}/rebuild_network.json")
|
57
60
|
end
|
58
61
|
end
|
59
62
|
end
|