Class: Staypuft::Deployment::NovaService

Inherits:
AbstractParamScope show all
Defined in:
app/models/staypuft/deployment/nova_service.rb

Defined Under Namespace

Modules: Mtu, NetworkManager, PrivateFixedRange, PublicFloatingRange, VlanRange Classes: Jail, NetworkRangesValidator, NovaVlanRangeValidator

Constant Summary collapse

VLAN_HELP =
Deployment::NeutronService::VLAN_HELP

Instance Attribute Summary

Attributes inherited from AbstractParamScope

#deployment

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from AbstractParamScope

#attributes=, #hostgroup, #initialize, #marked_for_destruction?

Methods included from AttributeParamStorage

#param_attr, #param_attr_array, #param_scope

Constructor Details

This class inherits a constructor from Staypuft::Deployment::AbstractParamScope

Class Method Details

.param_scopeObject



3
4
5
# File 'app/models/staypuft/deployment/nova_service.rb', line 3

def self.param_scope
  'nova'
end

Instance Method Details

#active?Boolean

Returns:

  • (Boolean)


106
107
108
# File 'app/models/staypuft/deployment/nova_service.rb', line 106

def active?
  deployment.networking == Deployment::Networking::NOVA
end

#fixed_range_sizeObject



136
137
138
139
140
141
142
143
144
# File 'app/models/staypuft/deployment/nova_service.rb', line 136

def fixed_range_size
  fixed_range_str = private_fixed_range
  if fixed_range_str.empty?
    0
  else
    fixed_range = IPAddr.new(fixed_range_str).to_range
    fixed_range.last.to_i - fixed_range.first.to_i + 1
  end
end

#min_fixed_range_cidrObject

for the current num_networks value (1 for non-vlan; based on the vlan range for VLAN, this calculates the smallest fixed range network cidr assuming the smallest useful network size of 4 (2 hosts+network address+broadcast address)



163
164
165
# File 'app/models/staypuft/deployment/nova_service.rb', line 163

def min_fixed_range_cidr
  "/#{32 - Math.log(4*num_networks,2).ceil}"
end

#network_overridesObject



114
115
116
117
118
# File 'app/models/staypuft/deployment/nova_service.rb', line 114

def network_overrides
  { 'force_dhcp_release' => false }.tap do |h|
    h.update 'vlan_start' => vlan_start if self.vlan_manager?
  end.to_yaml
end

#network_sizeObject

network size is equal to the number of IP addresses in the fixed range, divided by the number of networks, rounded down to the next power of two (or zero if <1)



149
150
151
152
153
154
155
156
# File 'app/models/staypuft/deployment/nova_service.rb', line 149

def network_size
  unrounded_size = fixed_range_size / num_networks
  if unrounded_size < 1
    0
  else
    2**Math.log(unrounded_size,2).floor
  end
end

#num_networksObject



128
129
130
131
132
133
134
# File 'app/models/staypuft/deployment/nova_service.rb', line 128

def num_networks
  if self.vlan_manager?
    vlan_range_arr[1].to_i - vlan_range_arr[0].to_i + 1
  else
    1
  end
end

#param_hashObject



167
168
169
170
171
172
# File 'app/models/staypuft/deployment/nova_service.rb', line 167

def param_hash
  { 'network_manager'          => network_manager,
    'vlan_range'               => vlan_range,
    'public_floating_range'    => public_floating_range,
    'private_fixed_range'      => private_fixed_range }
end

#set_defaultsObject



101
102
103
104
# File 'app/models/staypuft/deployment/nova_service.rb', line 101

def set_defaults
  self.network_manager = NetworkManager::FLAT_DHCP
  self.network_device_mtu = nil
end

#vlan_manager?Boolean

Returns:

  • (Boolean)


110
111
112
# File 'app/models/staypuft/deployment/nova_service.rb', line 110

def vlan_manager?
  self.network_manager == NetworkManager::VLAN
end

#vlan_range_arrObject



120
121
122
# File 'app/models/staypuft/deployment/nova_service.rb', line 120

def vlan_range_arr
  arr = self.vlan_range.split(':')
end

#vlan_startObject



124
125
126
# File 'app/models/staypuft/deployment/nova_service.rb', line 124

def vlan_start
  vlan_range_arr[0]
end