From e5e406cd1e9231d720cb4f3eedf08bf63e7462df Mon Sep 17 00:00:00 2001 From: Nicolas Brousse Date: Wed, 18 Sep 2024 16:53:05 +0200 Subject: [PATCH] wip --- app/controllers/frames_controller.rb | 2 +- app/controllers/modeles_controller.rb | 10 +++---- app/models/card.rb | 2 +- app/models/enclosure.rb | 4 +-- .../{composant.rb => enclosure_component.rb} | 4 +-- app/models/frame.rb | 2 +- app/models/modele.rb | 2 +- app/models/type_composant.rb | 2 +- app/queries/frames/including_servers_query.rb | 2 +- app/views/islets/_network_capacity.html.erb | 4 +-- app/views/modeles/_enclosure_fields.html.erb | 10 +++---- app/views/modeles/show.json.jbuilder | 2 +- app/views/pdus/_pdu.html.erb | 2 +- app/views/servers/_card_fields.html.erb | 6 ++--- app/views/servers/_draw_patch_panel.html.erb | 2 +- app/views/servers/_draw_server.html.erb | 8 +++--- .../servers/_draw_server_compact.html.erb | 10 +++---- app/views/servers/show.html.erb | 2 +- ...ename_composants_to_enclosure_component.rb | 5 ++++ db/schema.rb | 26 +++++++++---------- lib/tasks/fix_duplicated_slots.rake | 10 +++---- ...nt_spec.rb => enclosure_component_spec.rb} | 2 +- spec/models/enclosure_spec.rb | 2 +- spec/models/modele_spec.rb | 2 +- spec/models/type_composant_spec.rb | 2 +- ...omposants.yml => enclosure_components.yml} | 0 26 files changed, 65 insertions(+), 60 deletions(-) rename app/models/{composant.rb => enclosure_component.rb} (83%) create mode 100644 db/migrate/20240918144044_rename_composants_to_enclosure_component.rb rename spec/models/{composant_spec.rb => enclosure_component_spec.rb} (95%) rename test/fixtures/{composants.yml => enclosure_components.yml} (100%) diff --git a/app/controllers/frames_controller.rb b/app/controllers/frames_controller.rb index b2319ed93..4af083e45 100644 --- a/app/controllers/frames_controller.rb +++ b/app/controllers/frames_controller.rb @@ -121,7 +121,7 @@ def frame_params end def set_frame - @frame = Frame.all.includes(servers: [modele: [:category, :composants], + @frame = Frame.all.includes(servers: [modele: [:category, :components], cards: [:composant, ports: [connection: [cable: :connections]], card_type: [:port_type],]], diff --git a/app/controllers/modeles_controller.rb b/app/controllers/modeles_controller.rb index ccc9880f8..c50c35217 100644 --- a/app/controllers/modeles_controller.rb +++ b/app/controllers/modeles_controller.rb @@ -17,11 +17,11 @@ def show def new @modele = Modele.new - @modele.composants.build(:name => 'ALIM', type_composant_id: 4) - @modele.composants.build(:name => 'IPMI', type_composant_id: 4) - @modele.composants.build(:name => 'CM', type_composant_id: 4) + @modele.components.build(:name => 'ALIM', type_composant_id: 4) + @modele.components.build(:name => 'IPMI', type_composant_id: 4) + @modele.components.build(:name => 'CM', type_composant_id: 4) 7.times do |i| - @modele.composants.build(:name => "SL#{i + 1}", type_composant_id: 4) + @modele.components.build(:name => "SL#{i + 1}", type_composant_id: 4) end end @@ -84,7 +84,7 @@ def modele_params network_types: [], enclosures_attributes: [ :id, :modele_id, :_destroy, :position, :display, :grid_areas, - composants_attributes: [:type_composant_id, :enclosure_id, :name, :position, :_destroy, :id], + components_attributes: [:type_composant_id, :enclosure_id, :name, :position, :_destroy, :id], ] ) end diff --git a/app/models/card.rb b/app/models/card.rb index d47dffb6f..907c625ea 100644 --- a/app/models/card.rb +++ b/app/models/card.rb @@ -17,7 +17,7 @@ class Card < ApplicationRecord delegate :is_power_input?, to: :card_type, allow_nil: true belongs_to :server - belongs_to :composant + belongs_to :composant, class_name: "EnclosureComponent" delegate :frame, to: :server # TODO: replace by has_one? has_many :ports diff --git a/app/models/enclosure.rb b/app/models/enclosure.rb index a1a055713..7acef8b90 100644 --- a/app/models/enclosure.rb +++ b/app/models/enclosure.rb @@ -5,9 +5,9 @@ class Enclosure < ApplicationRecord acts_as_list scope: [:modele_id] belongs_to :modele - has_many :composants, -> { order(position: :asc) } + has_many :components, -> { order(position: :asc) }, class_name: "EnclosureComponent" - accepts_nested_attributes_for :composants, + accepts_nested_attributes_for :components, :allow_destroy => true, :reject_if => :all_blank end diff --git a/app/models/composant.rb b/app/models/enclosure_component.rb similarity index 83% rename from app/models/composant.rb rename to app/models/enclosure_component.rb index 0d5a72499..7b550ea08 100644 --- a/app/models/composant.rb +++ b/app/models/enclosure_component.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -class Composant < ApplicationRecord +class EnclosureComponent < ApplicationRecord include PublicActivity::Model tracked owner: ->(controller, model) { controller && controller.current_user } tracked :parameters => { @@ -15,7 +15,7 @@ class Composant < ApplicationRecord has_many :cards - scope :slots, -> { where(type_composant: TypeComposant.find_by_name('SLOT')).order("composants.position ASC") } + scope :slots, -> { where(type_composant: TypeComposant.find_by_name('SLOT')).order("enclosure_components.position ASC") } def to_s name.to_s diff --git a/app/models/frame.rb b/app/models/frame.rb index 0e72eb018..8f29161c1 100644 --- a/app/models/frame.rb +++ b/app/models/frame.rb @@ -138,7 +138,7 @@ def init_pdus side: Pdu.calculated_side(frame, line_name), color: line_name == 'A' ? 'J' : 'B') puts "ERROR: #{pdu}" unless pdu.valid? - enclosure.composants.each do |composant| + enclosure.components.each do |composant| card = Card.find_or_create_by(card_type: card_type, server: pdu, composant: composant) diff --git a/app/models/modele.rb b/app/models/modele.rb index 3f406016a..ba63e01e5 100644 --- a/app/models/modele.rb +++ b/app/models/modele.rb @@ -16,7 +16,7 @@ class Modele < ApplicationRecord has_many :servers, dependent: :restrict_with_error has_many :enclosures, dependent: :restrict_with_error - has_many :composants, through: :enclosures + has_many :components, through: :enclosures belongs_to :manufacturer, counter_cache: true belongs_to :architecture, counter_cache: true diff --git a/app/models/type_composant.rb b/app/models/type_composant.rb index bd99aa041..599b65c48 100644 --- a/app/models/type_composant.rb +++ b/app/models/type_composant.rb @@ -5,5 +5,5 @@ class TypeComposant < ApplicationRecord tracked owner: ->(controller, model) { controller && controller.current_user } has_changelog - has_many :composants + has_many :components, class_name: "EnclosureComponent" end diff --git a/app/queries/frames/including_servers_query.rb b/app/queries/frames/including_servers_query.rb index fe007a41b..33bbe66ba 100644 --- a/app/queries/frames/including_servers_query.rb +++ b/app/queries/frames/including_servers_query.rb @@ -7,7 +7,7 @@ def self.call(relation = Frame.all, order = nil) bay: [:frames], servers: [ :frame, :gestion, :cluster, - modele: [:category, :composants], + modele: [:category, :components], cards: [ :composant, ports: [:cable, connection: :cable], diff --git a/app/views/islets/_network_capacity.html.erb b/app/views/islets/_network_capacity.html.erb index ab8fdfb93..a57dc8a15 100644 --- a/app/views/islets/_network_capacity.html.erb +++ b/app/views/islets/_network_capacity.html.erb @@ -12,7 +12,7 @@ grid-row: <%= "#{bay.lane.to_i}/#{bay.lane.to_i+1}" %>;"> <% frames.each_with_index do |frame, index| %> <% # TODO: move in the action or a model method %> - <% servers = frame.servers.includes(:bay, :stack, modele: { enclosures: :composants }, + <% servers = frame.servers.includes(:bay, :stack, modele: { enclosures: :components }, cards: [{ card_type: :port_type }, { ports: :cable }]) .where("servers.network_types @> ?", "{#{network}}") # Switch LAN %> @@ -40,7 +40,7 @@ <% if server.modele.present? %> <% server.modele.enclosures.each do |enclosure| %> <% cards = server.cards %> - <% components_per_enclosure = enclosure.composants.reject { |c| c.name&.downcase == "alim" } %> + <% components_per_enclosure = enclosure.components.reject { |c| c.name&.downcase == "alim" } %> <% if enclosure.display != 'horizontal' %> diff --git a/app/views/modeles/_enclosure_fields.html.erb b/app/views/modeles/_enclosure_fields.html.erb index 5cd237479..dd34816c6 100644 --- a/app/views/modeles/_enclosure_fields.html.erb +++ b/app/views/modeles/_enclosure_fields.html.erb @@ -13,12 +13,12 @@ - <% child_index = "__#{Digest::MD5.hexdigest("Enclosure_composants")}_NEW_RECORD__" %> + <% child_index = "__#{Digest::MD5.hexdigest("Enclosure_components")}_NEW_RECORD__" %>
@@ -38,8 +38,8 @@ <%= f.text_area :grid_areas, class: "font-monospace form-control", style: "height:110px;" %> - <%= f.fields_for :composants, f.object.composants.slots do |composant_fields| %> - <%= render partial: "composant_fields", locals: { f: composant_fields, type_composant: "SLOT" } %> + <%= f.fields_for :components, f.object.components.slots do |composant_fields| %> + <%= render partial: "component_fields", locals: { f: composant_fields, type_composant: "SLOT" } %> <% end %>
  • diff --git a/app/views/modeles/show.json.jbuilder b/app/views/modeles/show.json.jbuilder index d4e7a2f3b..b7ea4fe53 100644 --- a/app/views/modeles/show.json.jbuilder +++ b/app/views/modeles/show.json.jbuilder @@ -3,7 +3,7 @@ json.extract! @modele, :id, :name, :description, :color, :u, :nb_elts, :category, :architecture, :manufacturer json.enclosures(@modele.enclosures) do |enclosure| - json.extract! enclosure, :id, :display, :position, :grid_areas, :composants + json.extract! enclosure, :id, :display, :position, :grid_areas, :components end json.extract! @modele, :created_at, :updated_at diff --git a/app/views/pdus/_pdu.html.erb b/app/views/pdus/_pdu.html.erb index bb3290a3e..e8e4b51c8 100644 --- a/app/views/pdus/_pdu.html.erb +++ b/app/views/pdus/_pdu.html.erb @@ -1,5 +1,5 @@
    <%= link_to pdu.name[-1], edit_server_path(pdu.id) %>
    -<% pdu.modele.enclosures.first.composants.each do |component| %> +<% pdu.modele.enclosures.first.components.each do |component| %>
    <%= link_to "#", class: "pdu-line" do %> <%= component.name ? component.name[-2..-1] : ' ' %> diff --git a/app/views/servers/_card_fields.html.erb b/app/views/servers/_card_fields.html.erb index e7d94a0f5..3d548e99b 100644 --- a/app/views/servers/_card_fields.html.erb +++ b/app/views/servers/_card_fields.html.erb @@ -1,8 +1,8 @@ <% if local_assigns[:enclosure].present? - composants = enclosure.composants.slots + components = enclosure.components.slots else - composants = server.modele.composants.slots + components = server.modele.components.slots end %> @@ -11,7 +11,7 @@ data-new-record="<%= f.object.new_record? %>">
    - <%= f.select :composant_id, options_for_select(composants.map { |c| [c.name || c.position, c.id] }, + <%= f.select :composant_id, options_for_select(components.map { |c| [c.name || c.position, c.id] }, f.object.composant_id), {}, { class: "form-select" } %> diff --git a/app/views/servers/_draw_patch_panel.html.erb b/app/views/servers/_draw_patch_panel.html.erb index 04b85fe49..5b57664e2 100644 --- a/app/views/servers/_draw_patch_panel.html.erb +++ b/app/views/servers/_draw_patch_panel.html.erb @@ -2,7 +2,7 @@ <%= link_to h(server.name), server_path(server, :view => params[:view]) %>
    - <% slots_sur_modele = server.modele.composants.slots.to_a %> + <% slots_sur_modele = server.modele.components.slots.to_a %> <% half_slots = slots_sur_modele.length / 2 %> <% slots_sur_modele.slice(0, half_slots).each do |slot| %> diff --git a/app/views/servers/_draw_server.html.erb b/app/views/servers/_draw_server.html.erb index d7acb1ab4..357f881cf 100644 --- a/app/views/servers/_draw_server.html.erb +++ b/app/views/servers/_draw_server.html.erb @@ -1,6 +1,6 @@ <% if server.modele.present? %>
    - <% slots_sur_modele = server.modele.composants.slots %> + <% slots_sur_modele = server.modele.components.slots %>
    <% slots_sur_modele.each do |slot| %> @@ -33,7 +33,7 @@ @@ -41,7 +41,7 @@
    <%= ports_by_card(port_type: PortType.find_by_name('RJ'), - port_quantity: server.modele.composants.where(type_composant_id: 3).count, + port_quantity: server.modele.components.where(type_composant_id: 3).count, ports_data: Port.where(card: server.cards.joins(composant: :type_composant).where('type_composants.name = ?', 'CM')) )%>
    - <% if server.modele.composants.where(type_composant_id: 2).count > 0 %> + <% if server.modele.components.where(type_composant_id: 2).count > 0 %>
    <%= ports_by_card(port_type: PortType.find_by_name('IPMI'), port_quantity: 1, @@ -60,7 +60,7 @@
    <%= link_to server.modele.try(:name), edit_modele_path(server.modele) %>
    - <% alims_sur_modele = server.modele.composants.where(type_composant_id: 1) %> + <% alims_sur_modele = server.modele.components.where(type_composant_id: 1) %> <% alims_sur_modele.each_with_index do |composant_alim, i| %> ALIM <%= i+1 %> <% end %> diff --git a/app/views/servers/_draw_server_compact.html.erb b/app/views/servers/_draw_server_compact.html.erb index b438744fb..5cb9623d6 100644 --- a/app/views/servers/_draw_server_compact.html.erb +++ b/app/views/servers/_draw_server_compact.html.erb @@ -5,7 +5,7 @@ <% server.modele.enclosures.each_with_index do |enclosure, index| %> - <% composants_per_enclosure = enclosure.composants.slots %> + <% components_per_enclosure = enclosure.components.slots %> <% if enclosure.display == "grid" %>
    - <% composants_per_enclosure.each do |component| %> + <% components_per_enclosure.each do |component| %> <% class_name = "item-#{component.name}" %>