fog 0.6.0 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +11 -6
- data/changelog.txt +49 -0
- data/fog.gemspec +5 -4
- data/lib/fog.rb +1 -1
- data/lib/fog/aws/cloud_formation.rb +124 -0
- data/lib/fog/aws/elb.rb +4 -1
- data/lib/fog/aws/iam.rb +6 -0
- data/lib/fog/aws/parsers/cloud_formation/basic.rb +12 -0
- data/lib/fog/aws/parsers/cloud_formation/create_stack.rb +19 -0
- data/lib/fog/aws/parsers/cloud_formation/describe_stack_events.rb +31 -0
- data/lib/fog/aws/parsers/cloud_formation/describe_stack_resources.rb +31 -0
- data/lib/fog/aws/parsers/cloud_formation/describe_stacks.rb +72 -0
- data/lib/fog/aws/parsers/cloud_formation/get_template.rb +19 -0
- data/lib/fog/aws/parsers/cloud_formation/validate_template.rb +52 -0
- data/lib/fog/aws/parsers/iam/login_profile.rb +27 -0
- data/lib/fog/aws/parsers/iam/upload_server_certificate.rb +26 -0
- data/lib/fog/aws/parsers/rds/authorize_db_security_group_ingress.rb +38 -0
- data/lib/fog/aws/parsers/rds/create_db_instance.rb +34 -0
- data/lib/fog/aws/parsers/rds/create_db_instance_read_replica.rb +34 -0
- data/lib/fog/aws/parsers/rds/create_db_parameter_group.rb +35 -0
- data/lib/fog/aws/parsers/rds/create_db_security_group.rb +38 -0
- data/lib/fog/aws/parsers/rds/create_db_snapshot.rb +35 -0
- data/lib/fog/aws/parsers/rds/db_parser.rb +123 -0
- data/lib/fog/aws/parsers/rds/delete_db_instance.rb +35 -0
- data/lib/fog/aws/parsers/rds/delete_db_parameter_group.rb +27 -0
- data/lib/fog/aws/parsers/rds/delete_db_security_group.rb +33 -0
- data/lib/fog/aws/parsers/rds/delete_db_snapshot.rb +34 -0
- data/lib/fog/aws/parsers/rds/describe_db_instances.rb +36 -0
- data/lib/fog/aws/parsers/rds/describe_db_parameter_groups.rb +38 -0
- data/lib/fog/aws/parsers/rds/describe_db_parameters.rb +44 -0
- data/lib/fog/aws/parsers/rds/describe_db_security_groups.rb +39 -0
- data/lib/fog/aws/parsers/rds/describe_db_snapshots.rb +39 -0
- data/lib/fog/aws/parsers/rds/modify_db_instance.rb +34 -0
- data/lib/fog/aws/parsers/rds/modify_db_parameter_group.rb +28 -0
- data/lib/fog/aws/parsers/rds/reboot_db_instance.rb +35 -0
- data/lib/fog/aws/parsers/rds/restore_db_instance_from_db_snapshot.rb +34 -0
- data/lib/fog/aws/parsers/rds/restore_db_instance_to_point_in_time.rb +35 -0
- data/lib/fog/aws/parsers/rds/revoke_db_security_group_ingress.rb +39 -0
- data/lib/fog/aws/parsers/rds/security_group_parser.rb +39 -0
- data/lib/fog/aws/parsers/rds/snapshot_parser.rb +40 -0
- data/lib/fog/aws/rds.rb +161 -0
- data/lib/fog/aws/rds/models/parameter.rb +21 -0
- data/lib/fog/aws/rds/models/parameter_group.rb +36 -0
- data/lib/fog/aws/rds/models/parameter_groups.rb +27 -0
- data/lib/fog/aws/rds/models/parameters.rb +37 -0
- data/lib/fog/aws/rds/models/security_group.rb +73 -0
- data/lib/fog/aws/rds/models/security_groups.rb +43 -0
- data/lib/fog/aws/rds/models/server.rb +105 -0
- data/lib/fog/aws/rds/models/servers.rb +27 -0
- data/lib/fog/aws/rds/models/snapshot.rb +49 -0
- data/lib/fog/aws/rds/models/snapshots.rb +45 -0
- data/lib/fog/aws/requests/cloud_formation/create_stack.rb +71 -0
- data/lib/fog/aws/requests/cloud_formation/delete_stack.rb +30 -0
- data/lib/fog/aws/requests/cloud_formation/describe_stack_events.rb +44 -0
- data/lib/fog/aws/requests/cloud_formation/describe_stack_resources.rb +43 -0
- data/lib/fog/aws/requests/cloud_formation/describe_stacks.rb +42 -0
- data/lib/fog/aws/requests/cloud_formation/get_template.rb +32 -0
- data/lib/fog/aws/requests/cloud_formation/validate_template.rb +34 -0
- data/lib/fog/aws/requests/elb/create_load_balancer.rb +4 -0
- data/lib/fog/aws/requests/iam/create_login_profile.rb +36 -0
- data/lib/fog/aws/requests/iam/delete_login_profile.rb +31 -0
- data/lib/fog/aws/requests/iam/delete_server_certificate.rb +32 -0
- data/lib/fog/aws/requests/iam/get_login_profile.rb +35 -0
- data/lib/fog/aws/requests/iam/update_login_profile.rb +33 -0
- data/lib/fog/aws/requests/iam/upload_server_certificate.rb +45 -0
- data/lib/fog/aws/requests/rds/authorize_db_security_group_ingress.rb +43 -0
- data/lib/fog/aws/requests/rds/create_db_instance.rb +56 -0
- data/lib/fog/aws/requests/rds/create_db_instance_read_replica.rb +42 -0
- data/lib/fog/aws/requests/rds/create_db_parameter_group.rb +41 -0
- data/lib/fog/aws/requests/rds/create_db_security_group.rb +37 -0
- data/lib/fog/aws/requests/rds/create_db_snapshot.rb +36 -0
- data/lib/fog/aws/requests/rds/delete_db_instance.rb +40 -0
- data/lib/fog/aws/requests/rds/delete_db_parameter_group.rb +36 -0
- data/lib/fog/aws/requests/rds/delete_db_security_group.rb +36 -0
- data/lib/fog/aws/requests/rds/delete_db_snapshot.rb +36 -0
- data/lib/fog/aws/requests/rds/describe_db_instances.rb +42 -0
- data/lib/fog/aws/requests/rds/describe_db_parameter_groups.rb +45 -0
- data/lib/fog/aws/requests/rds/describe_db_parameters.rb +46 -0
- data/lib/fog/aws/requests/rds/describe_db_security_groups.rb +39 -0
- data/lib/fog/aws/requests/rds/describe_db_snapshots.rb +42 -0
- data/lib/fog/aws/requests/rds/modify_db_instance.rb +54 -0
- data/lib/fog/aws/requests/rds/modify_db_parameter_group.rb +55 -0
- data/lib/fog/aws/requests/rds/reboot_db_instance.rb +34 -0
- data/lib/fog/aws/requests/rds/restore_db_instance_from_db_snapshot.rb +34 -0
- data/lib/fog/aws/requests/rds/restore_db_instance_to_point_in_time.rb +35 -0
- data/lib/fog/aws/requests/rds/revoke_db_security_group_ingress.rb +44 -0
- data/lib/fog/aws/simpledb.rb +21 -7
- data/lib/fog/bin.rb +2 -1
- data/lib/fog/bin/aws.rb +8 -0
- data/lib/fog/bin/virtual_box.rb +52 -0
- data/lib/fog/cdn/aws.rb +9 -8
- data/lib/fog/cdn/rackspace.rb +6 -6
- data/lib/fog/cdn/requests/rackspace/post_container.rb +30 -0
- data/lib/fog/cdn/requests/rackspace/put_container.rb +1 -1
- data/lib/fog/compute.rb +6 -3
- data/lib/fog/compute/aws.rb +11 -7
- data/lib/fog/compute/bluebox.rb +5 -6
- data/lib/fog/compute/brightbox.rb +3 -0
- data/lib/fog/compute/go_grid.rb +5 -6
- data/lib/fog/compute/linode.rb +5 -6
- data/lib/fog/compute/models/aws/flavors.rb +19 -18
- data/lib/fog/compute/models/aws/server.rb +23 -0
- data/lib/fog/compute/models/aws/tag.rb +1 -1
- data/lib/fog/compute/models/brightbox/server.rb +7 -1
- data/lib/fog/compute/models/virtual_box/medium.rb +87 -0
- data/lib/fog/compute/models/virtual_box/medium_format.rb +34 -0
- data/lib/fog/compute/models/virtual_box/mediums.rb +32 -0
- data/lib/fog/compute/models/virtual_box/nat_engine.rb +65 -0
- data/lib/fog/compute/models/virtual_box/nat_redirect.rb +91 -0
- data/lib/fog/compute/models/virtual_box/nat_redirects.rb +41 -0
- data/lib/fog/compute/models/virtual_box/network_adapter.rb +82 -0
- data/lib/fog/compute/models/virtual_box/network_adapters.rb +42 -0
- data/lib/fog/compute/models/virtual_box/server.rb +241 -0
- data/lib/fog/compute/models/virtual_box/servers.rb +41 -0
- data/lib/fog/compute/models/virtual_box/storage_controller.rb +83 -0
- data/lib/fog/compute/models/virtual_box/storage_controllers.rb +38 -0
- data/lib/fog/compute/models/voxel/servers.rb +7 -6
- data/lib/fog/compute/new_servers.rb +5 -6
- data/lib/fog/compute/parsers/aws/monitor_unmonitor_instances.rb +35 -0
- data/lib/fog/compute/rackspace.rb +7 -7
- data/lib/fog/compute/requests/aws/delete_tags.rb +12 -9
- data/lib/fog/compute/requests/aws/monitor_instances.rb +52 -0
- data/lib/fog/compute/requests/aws/revoke_security_group_ingress.rb +24 -8
- data/lib/fog/compute/requests/aws/unmonitor_instances.rb +53 -0
- data/lib/fog/compute/requests/brightbox/activate_console_server.rb +20 -0
- data/lib/fog/compute/requests/brightbox/add_listeners_load_balancer.rb +20 -0
- data/lib/fog/compute/requests/brightbox/remove_listeners_load_balancer.rb +20 -0
- data/lib/fog/compute/slicehost.rb +5 -6
- data/lib/fog/compute/virtual_box.rb +48 -0
- data/lib/fog/compute/voxel.rb +30 -27
- data/lib/fog/core.rb +1 -0
- data/lib/fog/core/attributes.rb +3 -1
- data/lib/fog/core/collection.rb +2 -2
- data/lib/fog/core/credentials.rb +13 -3
- data/lib/fog/core/scp.rb +0 -4
- data/lib/fog/core/service.rb +0 -8
- data/lib/fog/core/ssh.rb +0 -4
- data/lib/fog/dns.rb +3 -3
- data/lib/fog/dns/aws.rb +8 -8
- data/lib/fog/dns/bluebox.rb +5 -7
- data/lib/fog/dns/dnsimple.rb +7 -7
- data/lib/fog/dns/linode.rb +5 -6
- data/lib/fog/dns/models/dnsimple/record.rb +11 -1
- data/lib/fog/dns/models/dnsimple/records.rb +7 -7
- data/lib/fog/dns/models/dnsimple/zones.rb +2 -1
- data/lib/fog/dns/requests/dnsimple/get_record.rb +34 -0
- data/lib/fog/dns/slicehost.rb +5 -6
- data/lib/fog/dns/zerigo.rb +5 -7
- data/lib/fog/providers.rb +2 -1
- data/lib/fog/providers/aws.rb +10 -8
- data/lib/fog/providers/virtual_box.rb +11 -0
- data/lib/fog/storage.rb +21 -0
- data/lib/fog/storage/aws.rb +16 -32
- data/lib/fog/storage/google.rb +6 -27
- data/lib/fog/storage/local.rb +7 -7
- data/lib/fog/storage/models/rackspace/directory.rb +1 -1
- data/lib/fog/storage/models/rackspace/file.rb +1 -0
- data/lib/fog/storage/rackspace.rb +5 -27
- data/lib/fog/storage/requests/aws/put_object.rb +2 -2
- data/lib/fog/storage/requests/aws/upload_part.rb +1 -1
- data/lib/fog/storage/requests/google/put_object.rb +2 -2
- data/lib/fog/storage/requests/rackspace/put_object.rb +1 -1
- data/tests/aws/requests/cloud_formation/stack_tests.rb +130 -0
- data/tests/aws/requests/iam/login_profile_tests.rb +64 -0
- data/tests/aws/requests/rds/helper.rb +169 -0
- data/tests/aws/requests/rds/instance_tests.rb +129 -0
- data/tests/aws/requests/rds/model_tests.rb +98 -0
- data/tests/aws/requests/rds/parameter_group_tests.rb +68 -0
- data/tests/aws/requests/rds/parameter_request_tests.rb +35 -0
- data/tests/compute/models/aws/server_monitor_tests.rb +47 -0
- data/tests/compute/models/server_tests.rb +7 -23
- data/tests/compute/parsers/aws/monitor_unmonitor_instances_tests.rb +49 -0
- data/tests/compute/requests/aws/security_group_tests.rb +69 -52
- data/tests/compute/requests/aws/tag_tests.rb +5 -5
- data/tests/compute/requests/brightbox/helper.rb +7 -6
- data/tests/compute/requests/brightbox/server_tests.rb +5 -0
- data/tests/compute/requests/voxel/server_tests.rb +2 -3
- data/tests/storage/requests/aws/bucket_tests.rb +10 -0
- metadata +148 -12
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'fog/core/collection'
|
2
|
+
require 'fog/compute/models/virtual_box/server'
|
3
|
+
|
4
|
+
module Fog
|
5
|
+
module VirtualBox
|
6
|
+
class Compute
|
7
|
+
|
8
|
+
class Servers < Fog::Collection
|
9
|
+
|
10
|
+
model Fog::VirtualBox::Compute::Server
|
11
|
+
|
12
|
+
def all
|
13
|
+
data = connection.machines.map do |machine|
|
14
|
+
{
|
15
|
+
:raw => machine
|
16
|
+
}
|
17
|
+
end
|
18
|
+
load(data)
|
19
|
+
end
|
20
|
+
|
21
|
+
def bootstrap(new_attributes = {})
|
22
|
+
raise 'Not Implemented'
|
23
|
+
# server = create(new_attributes)
|
24
|
+
# server.start
|
25
|
+
# server.wait_for { ready? }
|
26
|
+
# server.setup(:password => server.password)
|
27
|
+
# server
|
28
|
+
end
|
29
|
+
|
30
|
+
def get(server_id)
|
31
|
+
machine = connection.find_machine(server_id)
|
32
|
+
new(:raw => machine)
|
33
|
+
rescue ::VirtualBox::Exceptions::ObjectNotFoundException
|
34
|
+
nil
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,83 @@
|
|
1
|
+
require 'fog/core/model'
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module VirtualBox
|
5
|
+
class Compute
|
6
|
+
|
7
|
+
class StorageController < Fog::Model
|
8
|
+
|
9
|
+
identity :name
|
10
|
+
|
11
|
+
attribute :bootable
|
12
|
+
attribute :bus
|
13
|
+
attribute :controller_type
|
14
|
+
attribute :instance
|
15
|
+
attribute :max_devices_per_port_count
|
16
|
+
attribute :max_port_count
|
17
|
+
attribute :min_port_count
|
18
|
+
attribute :port_count
|
19
|
+
attribute :use_host_io_cache
|
20
|
+
|
21
|
+
attr_accessor :machine
|
22
|
+
|
23
|
+
def attach(medium, port, device = 0)
|
24
|
+
requires :identity, :machine
|
25
|
+
with_session do |session|
|
26
|
+
session.machine.attach_device(identity, port, device, medium.device_type, medium.instance_variable_get(:@raw))
|
27
|
+
session.machine.save_settings
|
28
|
+
end
|
29
|
+
true
|
30
|
+
end
|
31
|
+
|
32
|
+
def destroy
|
33
|
+
requires :identity, :machine
|
34
|
+
with_session do |session|
|
35
|
+
session.machine.remove_storage_controller(identity)
|
36
|
+
session.machine.save_settings
|
37
|
+
end
|
38
|
+
true
|
39
|
+
end
|
40
|
+
|
41
|
+
def save
|
42
|
+
requires :bus, :identity, :machine
|
43
|
+
with_session do |session|
|
44
|
+
self.raw = session.machine.add_storage_controller(identity, bus)
|
45
|
+
raw.port_count = 1
|
46
|
+
session.machine.save_settings
|
47
|
+
end
|
48
|
+
true
|
49
|
+
end
|
50
|
+
|
51
|
+
private
|
52
|
+
|
53
|
+
def raw
|
54
|
+
@raw
|
55
|
+
end
|
56
|
+
|
57
|
+
def raw=(new_raw)
|
58
|
+
@raw = new_raw
|
59
|
+
raw_attributes = {}
|
60
|
+
# TODO: pending my patches being accepted :bootable,
|
61
|
+
for key in [:bus, :controller_type, :instance, :max_devices_per_port_count, :max_port_count, :min_port_count, :port_count, :use_host_io_cache]
|
62
|
+
raw_attributes[key] = @raw.send(key)
|
63
|
+
end
|
64
|
+
merge_attributes(raw_attributes)
|
65
|
+
end
|
66
|
+
|
67
|
+
def session
|
68
|
+
::VirtualBox::Lib.lib.session
|
69
|
+
end
|
70
|
+
|
71
|
+
def with_session
|
72
|
+
raw_machine = machine.instance_variable_get(:@raw)
|
73
|
+
raw_machine.lock_machine(session, :write)
|
74
|
+
yield session
|
75
|
+
session.unlock_machine
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'fog/core/collection'
|
2
|
+
require 'fog/compute/models/virtual_box/storage_controller'
|
3
|
+
|
4
|
+
module Fog
|
5
|
+
module VirtualBox
|
6
|
+
class Compute
|
7
|
+
|
8
|
+
class StorageControllers < Fog::Collection
|
9
|
+
|
10
|
+
model Fog::VirtualBox::Compute::StorageController
|
11
|
+
|
12
|
+
attr_accessor :machine
|
13
|
+
|
14
|
+
def all
|
15
|
+
requires :machine
|
16
|
+
data = machine.instance_variable_get(:@raw).storage_controllers.map do |storage_controller|
|
17
|
+
{:raw => storage_controller}
|
18
|
+
end
|
19
|
+
load(data)
|
20
|
+
end
|
21
|
+
|
22
|
+
def get(storage_controller_name)
|
23
|
+
requires :machine
|
24
|
+
all.detect do |storage_controller|
|
25
|
+
storage_controller.name == storage_controller_name
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def new(attributes = {})
|
30
|
+
requires :machine
|
31
|
+
super({ :machine => machine }.merge!(attributes))
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -15,12 +15,13 @@ module Fog
|
|
15
15
|
|
16
16
|
def get(device_id)
|
17
17
|
if device_id && server = connection.devices_list(device_id).body['devices']
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
18
|
+
new(server.first)
|
19
|
+
end
|
20
|
+
rescue Fog::Service::Error => error
|
21
|
+
if error.message == "The device_id passed in can't be matched to a valid device."
|
22
|
+
nil
|
23
|
+
else
|
24
|
+
raise error
|
24
25
|
end
|
25
26
|
end
|
26
27
|
|
@@ -25,12 +25,6 @@ module Fog
|
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
|
-
def self.reset_data(keys=data.keys)
|
29
|
-
for key in [*keys]
|
30
|
-
data.delete(key)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
28
|
def initialize(options={})
|
35
29
|
unless options.delete(:provider)
|
36
30
|
location = caller.first
|
@@ -40,6 +34,11 @@ module Fog
|
|
40
34
|
end
|
41
35
|
|
42
36
|
@new_server_username = options[:new_servers_username]
|
37
|
+
reset_data
|
38
|
+
end
|
39
|
+
|
40
|
+
def reset_data
|
41
|
+
self.class.data.delete(@new_server_username)
|
43
42
|
@data = self.class.data[@new_server_username]
|
44
43
|
end
|
45
44
|
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Fog
|
2
|
+
module Parsers
|
3
|
+
module AWS
|
4
|
+
module Compute
|
5
|
+
|
6
|
+
class MonitorUnmonitorInstances < Fog::Parsers::Base
|
7
|
+
|
8
|
+
def reset
|
9
|
+
@response = {}
|
10
|
+
@instance_set = []
|
11
|
+
@current_instance_set = {}
|
12
|
+
end
|
13
|
+
|
14
|
+
def end_element(name)
|
15
|
+
case name
|
16
|
+
when 'requestId'
|
17
|
+
@response['requestId'] = @value
|
18
|
+
when 'instanceId'
|
19
|
+
@current_instance_set['instanceId'] = @value
|
20
|
+
when 'item'
|
21
|
+
@instance_set << @current_instance_set
|
22
|
+
@current_instance_set = {}
|
23
|
+
when 'state'
|
24
|
+
@current_instance_set['monitoring'] = @value
|
25
|
+
when 'instancesSet'
|
26
|
+
@response['instancesSet'] = @instance_set
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -53,12 +53,6 @@ module Fog
|
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
56
|
-
def self.reset_data(keys=data.keys)
|
57
|
-
for key in [*keys]
|
58
|
-
data.delete(key)
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
56
|
def initialize(options={})
|
63
57
|
unless options.delete(:provider)
|
64
58
|
location = caller.first
|
@@ -68,6 +62,11 @@ module Fog
|
|
68
62
|
end
|
69
63
|
|
70
64
|
@rackspace_username = options[:rackspace_username]
|
65
|
+
reset_data
|
66
|
+
end
|
67
|
+
|
68
|
+
def reset_data
|
69
|
+
self.class.data.delete(@rackspace_username)
|
71
70
|
@data = self.class.data[@rackspace_username]
|
72
71
|
end
|
73
72
|
|
@@ -103,7 +102,8 @@ module Fog
|
|
103
102
|
'X-Auth-Token' => @auth_token
|
104
103
|
}.merge!(params[:headers] || {}),
|
105
104
|
:host => @host,
|
106
|
-
:path => "#{@path}/#{params[:path]}"
|
105
|
+
:path => "#{@path}/#{params[:path]}",
|
106
|
+
:query => ('ignore_awful_caching' << Time.now.to_i.to_s)
|
107
107
|
}))
|
108
108
|
rescue Excon::Errors::Unauthorized => error
|
109
109
|
if JSON.parse(response.body)['unauthorized']['message'] == 'Invalid authentication token. Please renew.'
|
@@ -8,8 +8,8 @@ module Fog
|
|
8
8
|
# Remove tags from resources
|
9
9
|
#
|
10
10
|
# ==== Parameters
|
11
|
-
# * resources<~String> - One or more resources to
|
12
|
-
# * tags<~String> - hash of key value tag pairs to
|
11
|
+
# * resources<~String> - One or more resources to remove tags from
|
12
|
+
# * tags<~String> - hash of key value tag pairs to remove
|
13
13
|
#
|
14
14
|
# ==== Returns
|
15
15
|
# * response<~Excon::Response>:
|
@@ -18,15 +18,18 @@ module Fog
|
|
18
18
|
# * 'return'<~Boolean> - success?
|
19
19
|
def delete_tags(resources, tags)
|
20
20
|
resources = [*resources]
|
21
|
-
for key, value in tags
|
22
|
-
if value.nil?
|
23
|
-
tags[key] = ''
|
24
|
-
end
|
25
|
-
end
|
26
21
|
params = {}
|
27
22
|
params.merge!(AWS.indexed_param('ResourceId', resources))
|
28
|
-
|
29
|
-
|
23
|
+
|
24
|
+
# can not rely on indexed_param because nil values should be omitted
|
25
|
+
tags.keys.each_with_index do |key, index|
|
26
|
+
index += 1 # should start at 1 instead of 0
|
27
|
+
params.merge!("Tag.#{index}.Key" => key)
|
28
|
+
unless tags[key].nil?
|
29
|
+
params.merge("Tag.#{index}.Value" => tags[key])
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
30
33
|
request({
|
31
34
|
'Action' => 'DeleteTags',
|
32
35
|
:parser => Fog::Parsers::AWS::Compute::Basic.new
|
@@ -0,0 +1,52 @@
|
|
1
|
+
module Fog
|
2
|
+
module AWS
|
3
|
+
class Compute
|
4
|
+
|
5
|
+
class Real
|
6
|
+
|
7
|
+
require 'fog/compute/parsers/aws/monitor_unmonitor_instances'
|
8
|
+
|
9
|
+
# Monitor specified instance
|
10
|
+
# http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-MonitorInstances.html
|
11
|
+
#
|
12
|
+
# ==== Parameters
|
13
|
+
# * instance_ids<~Array> - Arrays of instances Ids to monitor
|
14
|
+
#
|
15
|
+
# ==== Returns
|
16
|
+
# * response<~Excon::Response>:
|
17
|
+
# * body<~Hash>:
|
18
|
+
# * 'requestId'<~String> - Id of request
|
19
|
+
# * 'instancesSet': http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-ItemType-MonitorInstancesResponseSetItemType.html
|
20
|
+
def monitor_instances(instance_ids)
|
21
|
+
params = AWS.indexed_param('InstanceId', instance_ids)
|
22
|
+
request({
|
23
|
+
'Action' => 'MonitorInstances',
|
24
|
+
:idempotent => true,
|
25
|
+
:parser => Fog::Parsers::AWS::Compute::MonitorUnmonitorInstances.new
|
26
|
+
}.merge!(params))
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
class Mock
|
32
|
+
|
33
|
+
def monitor_instances(instance_ids)
|
34
|
+
response = Excon::Response.new
|
35
|
+
response.status = 200
|
36
|
+
[*instance_ids].each do |instance_id|
|
37
|
+
if instance = @data[:instances][instance_id]
|
38
|
+
instance['monitoring']['state'] = 'enabled'
|
39
|
+
else
|
40
|
+
raise Fog::AWS::Compute::NotFound.new("The instance ID '#{instance_ids}' does not exist")
|
41
|
+
end
|
42
|
+
end
|
43
|
+
instances_set = [*instance_ids].inject([]) { |memo, id| memo << {'instanceId' => id, 'monitoring' => 'enabled'} }
|
44
|
+
response.body = {'requestId' => 'some_request_id', 'instancesSet' => instances_set}
|
45
|
+
response
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
end
|
@@ -8,14 +8,13 @@ module Fog
|
|
8
8
|
# Remove permissions from a security group
|
9
9
|
#
|
10
10
|
# ==== Parameters
|
11
|
+
# * 'GroupName'<~String> - Name of group
|
11
12
|
# * options<~Hash>:
|
12
|
-
# * 'GroupName'<~String> - Name of group
|
13
13
|
# * 'SourceSecurityGroupName'<~String> - Name of security group to authorize
|
14
14
|
# * 'SourceSecurityGroupOwnerId'<~String> - Name of owner to authorize
|
15
15
|
# or
|
16
16
|
# * 'CidrIp' - CIDR range
|
17
17
|
# * 'FromPort' - Start of port range (or -1 for ICMP wildcard)
|
18
|
-
# * 'GroupName' - Name of group to modify
|
19
18
|
# * 'IpProtocol' - Ip protocol, must be in ['tcp', 'udp', 'icmp']
|
20
19
|
# * 'ToPort' - End of port range (or -1 for ICMP wildcard)
|
21
20
|
#
|
@@ -24,9 +23,18 @@ module Fog
|
|
24
23
|
# * body<~Hash>:
|
25
24
|
# * 'requestId'<~String> - Id of request
|
26
25
|
# * 'return'<~Boolean> - success?
|
27
|
-
def revoke_security_group_ingress(options = {})
|
26
|
+
def revoke_security_group_ingress(group_name, options = {})
|
27
|
+
if group_name.is_a?(Hash)
|
28
|
+
location = caller.first
|
29
|
+
warning = "[yellow][WARN] Fog::AWS::Compute#revoke_security_group_ingress now requires the 'group_name' parameter. Only specifying an options hash is now deprecated"
|
30
|
+
warning << " [light_black](" << location << ")[/] "
|
31
|
+
Formatador.display_line(warning)
|
32
|
+
options = group_name
|
33
|
+
group_name = options['GroupName']
|
34
|
+
end
|
28
35
|
request({
|
29
36
|
'Action' => 'RevokeSecurityGroupIngress',
|
37
|
+
'GroupName' => group_name,
|
30
38
|
:idempotent => true,
|
31
39
|
:parser => Fog::Parsers::AWS::Compute::Basic.new
|
32
40
|
}.merge!(options))
|
@@ -36,13 +44,21 @@ module Fog
|
|
36
44
|
|
37
45
|
class Mock
|
38
46
|
|
39
|
-
def revoke_security_group_ingress(options = {})
|
47
|
+
def revoke_security_group_ingress(group_name, options = {})
|
48
|
+
if group_name.is_a?(Hash)
|
49
|
+
location = caller.first
|
50
|
+
warning = "[yellow][WARN] Fog::AWS::Compute#revoke_security_group_ingress now requires the 'group_name' parameter. Only specifying an options hash is now deprecated"
|
51
|
+
warning << " [light_black](" << location << ")[/] "
|
52
|
+
Formatador.display_line(warning)
|
53
|
+
options = group_name
|
54
|
+
group_name = options['GroupName']
|
55
|
+
end
|
40
56
|
response = Excon::Response.new
|
41
|
-
group = @data[:security_groups][
|
57
|
+
group = @data[:security_groups][group_name]
|
42
58
|
if group
|
43
|
-
if options['
|
59
|
+
if options['SourceSecurityGroupName'] && options['SourceSecurityGroupOwnerId']
|
44
60
|
group['ipPermissions'].delete_if {|permission|
|
45
|
-
permission['groups'].first['groupName'] ==
|
61
|
+
permission['groups'].first['groupName'] == group_name
|
46
62
|
}
|
47
63
|
else
|
48
64
|
ingress = group['ipPermissions'].select {|permission|
|
@@ -66,7 +82,7 @@ module Fog
|
|
66
82
|
}
|
67
83
|
response
|
68
84
|
else
|
69
|
-
raise Fog::AWS::Compute::NotFound.new("The security group '#{
|
85
|
+
raise Fog::AWS::Compute::NotFound.new("The security group '#{group_name}' does not exist")
|
70
86
|
end
|
71
87
|
end
|
72
88
|
|
@@ -0,0 +1,53 @@
|
|
1
|
+
module Fog
|
2
|
+
module AWS
|
3
|
+
class Compute
|
4
|
+
|
5
|
+
class Real
|
6
|
+
|
7
|
+
require 'fog/compute/parsers/aws/monitor_unmonitor_instances'
|
8
|
+
|
9
|
+
# UnMonitor specified instance
|
10
|
+
# http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-UnmonitorInstances.html
|
11
|
+
#
|
12
|
+
# ==== Parameters
|
13
|
+
# * instance_ids<~Array> - Arrays of instances Ids to monitor
|
14
|
+
#
|
15
|
+
# ==== Returns
|
16
|
+
# * response<~Excon::Response>:
|
17
|
+
# * body<~Hash>:
|
18
|
+
# * 'requestId'<~String> - Id of request
|
19
|
+
# * 'instancesSet': http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-ItemType-MonitorInstancesResponseSetItemType.html
|
20
|
+
def unmonitor_instances(instance_ids)
|
21
|
+
params = AWS.indexed_param('InstanceId', instance_ids)
|
22
|
+
request({
|
23
|
+
'Action' => 'UnmonitorInstances',
|
24
|
+
:idempotent => true,
|
25
|
+
:parser => Fog::Parsers::AWS::Compute::MonitorUnmonitorInstances.new
|
26
|
+
}.merge!(params))
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
class Mock
|
32
|
+
|
33
|
+
def unmonitor_instances(instance_ids)
|
34
|
+
response = Excon::Response.new
|
35
|
+
response.status = 200
|
36
|
+
[*instance_ids].each do |instance_id|
|
37
|
+
if instance = @data[:instances][instance_id]
|
38
|
+
instance['monitoring']['state'] = 'enabled'
|
39
|
+
else
|
40
|
+
raise Fog::AWS::Compute::NotFound.new("The instance ID '#{instance_ids}' does not exist")
|
41
|
+
end
|
42
|
+
end
|
43
|
+
instances_set = [*instance_ids].inject([]) { |memo, id| memo << {'instanceId' => id, 'monitoring' => 'disabled'} }
|
44
|
+
response.body = {'requestId' => 'some_request_id', 'instancesSet' => instances_set}
|
45
|
+
response
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
end
|