Skip to content

Commit 18aa014

Browse files
committed
extend relationships to define the appropriate class names
use parent definition of ensure since they are now pretty generic. They may be no longer necessary and a build_ may suffice. Use parent definition of propagation so all attributes go across Extend parent managers to group the functionality together
1 parent e2a320b commit 18aa014

File tree

4 files changed

+40
-43
lines changed

4 files changed

+40
-43
lines changed

app/models/manageiq/providers/openstack/cinder_manager_mixin.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ module ManageIQ::Providers::Openstack::CinderManagerMixin
77
# Should use has_many :storage_managers,
88
has_one :cinder_manager,
99
:foreign_key => :parent_ems_id,
10-
:class_name => "ManageIQ::Providers::StorageManager::CinderManager",
10+
:class_name => "ManageIQ::Providers::Openstack::StorageManager::CinderManager",
1111
:autosave => true
1212

1313
delegate :cloud_volumes,

app/models/manageiq/providers/openstack/cloud_manager.rb

Lines changed: 17 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,18 @@ class ManageIQ::Providers::Openstack::CloudManager < ManageIQ::Providers::CloudM
2525
require_nested :Template
2626
require_nested :Vm
2727

28+
# may want to just us an array of child managers instead of this
29+
# it looks cleaner having this relationship,
30+
# but this will not be in sync with cinder/swift manager references
2831
has_many :storage_managers,
2932
:foreign_key => :parent_ems_id,
3033
:class_name => "ManageIQ::Providers::StorageManager",
3134
:autosave => true
3235
has_many :snapshots, :through => :vms_and_templates
36+
3337
include ManageIQ::Providers::Openstack::CinderManagerMixin
34-
include SwiftManagerMixin
38+
include ManageIQ::Providers::Openstack::SwiftManagerMixin
39+
include ManageIQ::Providers::Openstack::NetworkManagerMixin
3540
include ManageIQ::Providers::Openstack::ManagerMixin
3641
include ManageIQ::Providers::Openstack::IdentitySyncMixin
3742

@@ -49,9 +54,12 @@ class ManageIQ::Providers::Openstack::CloudManager < ManageIQ::Providers::CloudM
4954
supports :swift_service
5055
supports :create_host_aggregate
5156

57+
# TODO: move to after_initialization
5258
before_create :ensure_managers
5359

60+
# TODO: move to before_validation
5461
before_update :ensure_managers_zone_and_provider_region
62+
# TODO: after fixing inverse_of, this may go away
5563
after_save :refresh_parent_infra_manager
5664

5765
private_class_method def self.provider_id_options
@@ -419,52 +427,19 @@ def ensure_managers
419427
ensure_network_manager
420428
ensure_cinder_manager
421429
ensure_swift_manager
430+
# TODO: remove when this moves to before_initialization
422431
ensure_managers_zone_and_provider_region
423432
end
424433

425-
def ensure_managers_zone_and_provider_region
426-
if network_manager
427-
network_manager.zone_id = zone_id
428-
network_manager.tenant_id = tenant_id
429-
network_manager.provider_region = provider_region
430-
end
431-
432-
if cinder_manager
433-
cinder_manager.zone_id = zone_id
434-
cinder_manager.tenant_id = tenant_id
435-
cinder_manager.provider_region = provider_region
436-
end
437-
438-
if swift_manager
439-
swift_manager.zone_id = zone_id
440-
swift_manager.tenant_id = tenant_id
441-
swift_manager.provider_region = provider_region
442-
end
443-
end
444-
445-
def ensure_network_manager
446-
build_network_manager(:type => 'ManageIQ::Providers::Openstack::NetworkManager') unless network_manager
434+
# sigh, methods like this always start out innocent enough
435+
def child_manager_references
436+
[network_manager, cinder_manager, swift_manager].compact
447437
end
448438

449-
def ensure_cinder_manager
450-
return false if cinder_manager
451-
build_cinder_manager(:type => 'ManageIQ::Providers::Openstack::StorageManager::CinderManager')
452-
true
453-
end
454-
455-
def ensure_swift_manager
456-
return false if swift_manager
457-
build_swift_manager(:type => 'ManageIQ::Providers::StorageManager::SwiftManager')
458-
true
459-
end
460-
461-
after_save :save_on_other_managers
462-
463-
def save_on_other_managers
464-
storage_managers.update_all(:tenant_mapping_enabled => tenant_mapping_enabled)
465-
if network_manager
466-
network_manager.tenant_mapping_enabled = tenant_mapping_enabled
467-
network_manager.save!
439+
def ensure_managers_zone_and_provider_region
440+
child_manager_references.each do |child_manager|
441+
propagate_child_manager_attributes(child_manager)
442+
child_manager.tenant_mapping_enabled = tenant_mapping_enabled
468443
end
469444
end
470445

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
module ManageIQ::Providers::Openstack::NetworkManagerMixin
2+
extend ActiveSupport::Concern
3+
include ::HasNetworkManagerMixin
4+
5+
included do
6+
has_one :network_manager,
7+
:foreign_key => :parent_ems_id,
8+
:class_name => "ManageIQ::Providers::Openstack::NetworkManager",
9+
:autosave => true
10+
end
11+
end
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
module ManageIQ::Providers::Openstack::SwiftManagerMixin
2+
extend ActiveSupport::Concern
3+
include ::SwiftManagerMixin
4+
5+
included do
6+
has_one :swift_manager,
7+
:foreign_key => :parent_ems_id,
8+
:class_name => "ManageIQ::Providers::StorageManager::SwiftManager",
9+
:autosave => true
10+
end
11+
end

0 commit comments

Comments
 (0)