File: network_interface.rb

package info (click to toggle)
ruby-fog-aws 3.3.0-5
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 7,816 kB
  • sloc: ruby: 68,587; makefile: 6
file content (71 lines) | stat: -rw-r--r-- 2,883 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
module Fog
  module AWS
    class Compute
      class NetworkInterface < Fog::Model
        identity  :network_interface_id,        :aliases => 'networkInterfaceId'
        attribute :state
        attribute :request_id,                  :aliases => 'requestId'
        attribute :network_interface_id,        :aliases => 'networkInterfaceId'
        attribute :subnet_id,                   :aliases => 'subnetId'
        attribute :vpc_id,                      :aliases => 'vpcId'
        attribute :availability_zone,           :aliases => 'availabilityZone'
        attribute :description,                 :aliases => 'description'
        attribute :owner_id,                    :aliases => 'ownerId'
        attribute :requester_id,                :aliases => 'requesterId'
        attribute :requester_managed,           :aliases => 'requesterManaged'
        attribute :status,                      :aliases => 'status'
        attribute :mac_address,                 :aliases => 'macAddress'
        attribute :private_ip_address,          :aliases => 'privateIpAddress'
        attribute :private_ip_addresses,        :aliases => 'privateIpAddresses'
        attribute :private_dns_name,            :aliases => 'privateDnsName'
        attribute :source_dest_check,           :aliases => 'sourceDestCheck'
        attribute :group_set,                   :aliases => 'groupSet'
        attribute :attachment,                  :aliases => 'attachment'
        attribute :association,                 :aliases => 'association'
        attribute :tag_set,                     :aliases => 'tagSet'

        # Removes an existing network interface
        #
        # network_interface.destroy
        #
        # ==== Returns
        #
        # True or false depending on the result
        #

        def destroy
          requires :network_interface_id

          service.delete_network_interface(network_interface_id)
          true
        end

        # Create a network_interface
        #
        #  >> g = AWS.network_interfaces.new(:subnet_id => "subnet-someId", options)
        #  >> g.save
        #
        # options is an optional hash which may contain 'PrivateIpAddress', 'Description', 'GroupSet'
        #
        # == Returns:
        #
        # requestId and a networkInterface object
        #

        def save
          requires :subnet_id
          options = {
            'PrivateIpAddress'      => private_ip_address,
            'Description'           => description,
            'GroupSet'              => group_set,
          }
          options.delete_if {|key, value| value.nil?}
          data = service.create_network_interface(subnet_id, options).body['networkInterface']
          new_attributes = data.reject {|key,value| key == 'requestId'}
          merge_attributes(new_attributes)
          true
        end
      end
    end
  end
end