Class: Bosh::Director::DeploymentPlan::VipNetwork
- Includes:
- IpUtil
- Defined in:
- lib/bosh/director/deployment_plan/vip_network.rb
Constant Summary
Constants inherited from Network
Constants included from Bosh::Director::DnsHelper
Bosh::Director::DnsHelper::SOA, Bosh::Director::DnsHelper::TTL_4H, Bosh::Director::DnsHelper::TTL_5M
Instance Attribute Summary collapse
-
#cloud_properties ⇒ Hash
readonly
Network cloud properties.
Attributes inherited from Network
#canonical_name, #deployment, #name
Instance Method Summary collapse
-
#initialize(deployment, network_spec) ⇒ VipNetwork
constructor
Creates a new network.
-
#network_settings(reservation, default_properties = VALID_DEFAULTS) ⇒ Hash
Returns the network settings for the specific reservation.
-
#release(reservation) ⇒ void
Releases a previous reservation that had been fulfilled.
-
#reserve(reservation) ⇒ Boolean
Reserves a network resource.
Methods included from IpUtil
#each_ip, #format_ip, #ip_to_i, #ip_to_netaddr, #process_range
Methods inherited from Network
Methods included from ValidationHelper
Methods included from Bosh::Director::DnsHelper
#add_default_dns_server, #canonical, #default_dns_server, #delete_dns_records, #delete_empty_domain, #dns_domain_name, #dns_ns_record, #dns_servers, #invalid_dns, #reverse_domain, #reverse_host, #update_dns_a_record, #update_dns_ptr_record
Constructor Details
#initialize(deployment, network_spec) ⇒ VipNetwork
Creates a new network.
16 17 18 19 20 21 |
# File 'lib/bosh/director/deployment_plan/vip_network.rb', line 16 def initialize(deployment, network_spec) super @cloud_properties = safe_property(network_spec, "cloud_properties", :class => Hash) @reserved_ips = Set.new end |
Instance Attribute Details
#cloud_properties ⇒ Hash (readonly)
Returns Network cloud properties.
9 10 11 |
# File 'lib/bosh/director/deployment_plan/vip_network.rb', line 9 def cloud_properties @cloud_properties end |
Instance Method Details
#network_settings(reservation, default_properties = VALID_DEFAULTS) ⇒ Hash
Returns the network settings for the specific reservation.
65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/bosh/director/deployment_plan/vip_network.rb', line 65 def network_settings(reservation, default_properties = VALID_DEFAULTS) if default_properties && !default_properties.empty? raise NetworkReservationVipDefaultProvided, "Can't provide any defaults since this is a VIP network" end { "type" => "vip", "ip" => ip_to_netaddr(reservation.ip).ip, "cloud_properties" => @cloud_properties } end |
#release(reservation) ⇒ void
This method returns an undefined value.
Releases a previous reservation that had been fulfilled.
51 52 53 54 55 56 57 |
# File 'lib/bosh/director/deployment_plan/vip_network.rb', line 51 def release(reservation) unless reservation.ip raise NetworkReservationIpMissing, "Can't release reservation without an IP" end @reserved_ips.delete(reservation.ip) end |
#reserve(reservation) ⇒ Boolean
Reserves a network resource.
This is either an already used reservation being verified or a new one waiting to be fulfilled.
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/bosh/director/deployment_plan/vip_network.rb', line 30 def reserve(reservation) reservation.reserved = false if reservation.ip.nil? raise NetworkReservationIpMissing, "Must have IP for static reservations" elsif reservation.dynamic? reservation.error = NetworkReservation::WRONG_TYPE elsif @reserved_ips.include?(reservation.ip) reservation.error = NetworkReservation::USED else reservation.reserved = true reservation.type = NetworkReservation::STATIC @reserved_ips.add(reservation.ip) end reservation.reserved? end |