Class: Staypuft::Deployment::NovaService

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

Defined Under Namespace

Modules: 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)


97
98
99
# File 'app/models/staypuft/deployment/nova_service.rb', line 97

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

#fixed_range_sizeObject



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

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)



154
155
156
# File 'app/models/staypuft/deployment/nova_service.rb', line 154

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

#network_overridesObject



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

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)



140
141
142
143
144
145
146
147
# File 'app/models/staypuft/deployment/nova_service.rb', line 140

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



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

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



158
159
160
161
162
163
# File 'app/models/staypuft/deployment/nova_service.rb', line 158

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



93
94
95
# File 'app/models/staypuft/deployment/nova_service.rb', line 93

def set_defaults
  self.network_manager = NetworkManager::FLAT_DHCP
end

#vlan_manager?Boolean

Returns:

  • (Boolean)


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

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

#vlan_range_arrObject



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

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

#vlan_startObject



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

def vlan_start
  vlan_range_arr[0]
end