Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

bmc static and dynamic discovery changes #2516

Open
wants to merge 30 commits into
base: pub/new_architecture
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
844f654
bmc discover changes
abhishek-sa1 Feb 24, 2025
4207e68
dynamic bmc changes
abhishek-sa1 Feb 27, 2025
d1fe2b3
bmc required update
abhishek-sa1 Feb 27, 2025
4c456ee
bmc update
abhishek-sa1 Feb 27, 2025
9bade7a
Update main.yml
abhishek-sa1 Feb 27, 2025
8e7a3a7
bmc db update changes
abhishek-sa1 Feb 27, 2025
6b36078
Update update_node_obj.yml
abhishek-sa1 Feb 27, 2025
55e9af5
Update mtms_db.py
abhishek-sa1 Feb 27, 2025
111af0f
updating service node
abhishek-sa1 Feb 28, 2025
280425e
Merge branch 'dell:pub/new_architecture' into pub/new_architecture
abhishek-sa1 Feb 28, 2025
b7147ab
bmc static discovery update
abhishek-sa1 Feb 28, 2025
85f32f5
Update prepare_oim_completion.yml
abhishek-sa1 Feb 28, 2025
46378a1
Update main.yml
abhishek-sa1 Feb 28, 2025
b00aa9a
db dupdate
abhishek-sa1 Feb 28, 2025
6ee117d
db dupdate
abhishek-sa1 Feb 28, 2025
9a72f39
Update update_db_static.yml
abhishek-sa1 Feb 28, 2025
3482030
bmc static db update
abhishek-sa1 Feb 28, 2025
9d121a0
Update update_node_objects.py
abhishek-sa1 Feb 28, 2025
e57fb00
provision.yml updates
abhishek-sa1 Feb 28, 2025
7840b04
rename from fedora to rhel
abhishek-sa1 Feb 28, 2025
5c6c19b
doc string update
abhishek-sa1 Feb 28, 2025
25a6336
updating node obj
abhishek-sa1 Mar 3, 2025
61f9fed
update db static
abhishek-sa1 Mar 3, 2025
7038b28
Update main.yml
abhishek-sa1 Mar 3, 2025
e53548b
Update bmc_discover_ranges.py
abhishek-sa1 Mar 3, 2025
a5b6a25
updating netmask
abhishek-sa1 Mar 3, 2025
882446b
Update update_db_static.yml
abhishek-sa1 Mar 3, 2025
5a20672
discovery validation
abhishek-sa1 Mar 3, 2025
a852193
Merge branch 'pub/new_architecture' into bmc_discovery
abhishek-sa1 Mar 3, 2025
6a4ff9c
Merge pull request #3 from abhishek-sa1/bmc_discovery
abhishek-sa1 Mar 3, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,8 @@
- name: Configure synclist to osimage
ansible.builtin.command: "{{ xcat_path }}/chdef -t osimage -o {{ provision_os_image }} synclists={{ synclists_dest_path }}"
changed_when: true

- name: Configure synclist to osimage
ansible.builtin.command: "{{ xcat_path }}/chdef -t osimage -o {{ service_os_image }} synclists={{ synclists_dest_path }} otherpkgdir=''"
changed_when: true
when: '"first_layer" in ansible_run_tags'
12 changes: 4 additions & 8 deletions discovery/roles/configure_xcat/common/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,8 @@
MANPATH: "{{ xcat_manpath_env }}"
PERL_BADLANG: "{{ perl_badlang_env }}"
block:
- name: Set oim_os
ansible.builtin.set_fact:
oim_os: "{{ ansible_distribution | lower }}"

- name: Include vars for {{ oim_os }}
ansible.builtin.include_vars: "{{ role_path }}/../{{ oim_os }}/vars/main.yml"
- name: Include vars for {{ provision_os }}
ansible.builtin.include_vars: "{{ role_path }}/../{{ provision_os }}/vars/main.yml"

# - name: Configure proxy
# ansible.builtin.include_tasks: configure_proxy.yml
Expand All @@ -46,5 +42,5 @@
- name: Fetch osimage name
ansible.builtin.include_tasks: fetch_osimage.yml

- name: Configure xCAT on {{ oim_os }}
ansible.builtin.include_tasks: "{{ role_path }}/../{{ oim_os }}/tasks/main.yml"
- name: Configure xCAT on {{ provision_os }}
ansible.builtin.include_tasks: "{{ role_path }}/../{{ provision_os }}/tasks/main.yml"
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,15 @@
# limitations under the License.
---

- name: Configure bmc_network in networks table with static and dynamic ranges
- name: Configure bmc_network in networks table with dynamic ranges
ansible.builtin.shell: >
{{ xcat_path }}/chdef -t network -o bmc_network net={{ bmc_nic_subnet }} mask={{ bmc_nic_netmask }} mgtifname={{ bmc_nic }}
gateway={{ bmc_nic_ip }} dhcpserver={{ bmc_nic_ip }} dynamicrange="{{ bmc_dynamic_start_range }}-{{ bmc_dynamic_end_range }}"
staticrange="{{ bmc_static_start_range }}-{{ bmc_static_end_range }}" mtu={{ network_data.bmc_network.MTU }}
mtu={{ network_data.bmc_network.MTU }}
changed_when: true

- name: Update static ranges for bmc network
ansible.builtin.shell: >
{{ xcat_path }}/chdef -t network -o bmc_network staticrange="{{ bmc_conversion_static_start_range }}-{{ bmc_conversion_static_end_range }}"
changed_when: true
when: reassignment_status
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,3 @@
- name: User defined disk partition configuration
ansible.builtin.include_tasks: disk_partition.yml
when: disk_partition_configuration

# Need to be removed
#- name: Create omnia repo
# ansible.builtin.include_tasks: omnia_repo_config.yml

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,10 @@
---

- name: Run bmc discover for dynamic nodes
when: bmc_dynamic_status
block:
- name: Run bmc discover on ranges
ansible.builtin.command: |
{{ python_version }} {{ bmcdiscover_python }} {{ network_data.bmc_network.dynamic_range }} {{ dynamic_ip_file }}
{{ python_version }} {{ bmcdiscover_python }} {{ network_data.bmc_network.dynamic_range }} {{ dynamic_ip_file }} {{ dynamic_mode }}
changed_when: false
register: output_bmc_discover
rescue:
Expand Down
23 changes: 23 additions & 0 deletions discovery/roles/discovery_mechanism/mtms/tasks/bmc_first_layer.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Copyright 2025 Dell Inc. or its subsidiaries. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
---

- name: Perform bmc discover on static range
ansible.builtin.include_tasks: bmc_static_discovery.yml

- name: Create database for discovery bmc mode
ansible.builtin.include_tasks: update_db_static.yml

- name: Update node objects for static bmc mode
ansible.builtin.include_tasks: update_node_obj.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,22 @@
# limitations under the License.
---

- name: BMC Discover on Static ranges
ansible.builtin.shell: >-
set -o pipefail && \
{{ xcat_path }}/bmcdiscover --range {{ bmc_static_range }} -z > {{ static_ip_file }}
register: static_discovery
changed_when: false
# Call the discover ranges python file
- name: Create files for stanzas
ansible.builtin.file:
path: "{{ item }}"
state: touch
mode: "{{ file_perm }}"
with_items: "{{ stanza_paths }}"

- name: Assert static discovery
ansible.builtin.assert:
that:
- " '{{ no_bmc_found }}' not in static_discovery.stderr"
fail_msg: "{{ static_discovery_fail_msg }}"
when: not bmc_dynamic_status
- name: Run bmc discover for static and discovery nodes
block:
- name: Run bmc discover on ranges
ansible.builtin.command: |
{{ python_version }} {{ bmcdiscover_python }} {{ item.value.bmc_details.static_range }} {{ static_ip_file }} {{ static_mode }}
changed_when: false
register: output_bmc_discover
rescue:
- name: Bmc discover not done properly
ansible.builtin.fail:
msg: "{{ output_bmc_discover.stderr }}"
78 changes: 33 additions & 45 deletions discovery/roles/discovery_mechanism/mtms/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,57 +13,45 @@
# limitations under the License.
---

- name: Initialize default correlation value
ansible.builtin.set_fact:
correlation_status: "{{ network_data.admin_network.correlation_to_admin }}"
reassignment_status: "{{ network_data.bmc_network.reassignment_to_static }}"

- name: Update IPMI table and create genesis images
when: discovery_mech_bmc
- name: Perform operations for static range
when: bmc_static_status
block:
- name: Update xcat networks table with discovery ranges
ansible.builtin.include_tasks: update_xcat_network_discovery_range.yml
when: bmc_discover_range_status

- name: Perform operations on discovery range
when: bmc_discover_range_status or bmc_static_status
block:
- name: Perform bmc discover on discovery range
ansible.builtin.include_tasks: bmc_discover_ranges.yml

- name: Create database for discovery bmc mode
ansible.builtin.include_tasks: update_db_static.yml

- name: Update node objects for static bmc mode
ansible.builtin.include_tasks: update_node_obj.yml

- name: Configure dhcp
ansible.builtin.include_tasks: "{{ role_path }}/../common/tasks/configure_dhcp.yml"

- name: Perform operations for dynamic range
when: bmc_dynamic_status
block:
- name: Before starting dynamic discovery wait for "{{ dhcp_timeout }}"
ansible.builtin.pause:
seconds: "{{ dhcp_timeout }}"
prompt: "{{ dhcp_timeout_msg }}"
- name: BMC discover for first layer of nodes
ansible.builtin.include_tasks: bmc_first_layer.yml
when:
- '"first_layer" in ansible_run_tags'
- item.value.bmc_static_status is defined
- item.value.bmc_static_status
loop: "{{ groups_roles_info | dict2items }}"

- name: Configure dhcp
ansible.builtin.include_tasks: "{{ role_path }}/../common/tasks/configure_dhcp.yml"

- name: Perform operations for dynamic range
when:
- discovery_mech_dynamic_bmc
block:
- name: Before starting dynamic discovery wait for "{{ dhcp_timeout }}"
ansible.builtin.pause:
seconds: "{{ dhcp_timeout }}"
prompt: "{{ dhcp_timeout_msg }}"

- name: Enable IPMI on dynamic iDRACs
ansible.builtin.include_tasks: dynamic_ipmi_enable.yml
- name: Enable IPMI on dynamic iDRACs
ansible.builtin.include_tasks: dynamic_ipmi_enable.yml

- name: Perform BMC Discover on dynamic range
ansible.builtin.include_tasks: bmc_dynamic_discovery.yml
- name: Perform BMC Discover on dynamic range
ansible.builtin.include_tasks: bmc_dynamic_discovery.yml

- name: Update node objects for dynamic bmc_mode
ansible.builtin.include_tasks: update_db_dynamic.yml
when: dynamic_final_status
- name: Update node objects for dynamic bmc_mode
ansible.builtin.include_tasks: update_db_dynamic.yml
when: dynamic_final_status

- name: Update node objects for static bmc mode
ansible.builtin.include_tasks: update_node_obj.yml
when: dynamic_final_status
- name: Update node objects for static bmc mode
ansible.builtin.include_tasks: update_node_obj.yml
when: dynamic_final_status

- name: Configure dhcp
ansible.builtin.include_tasks: "{{ role_path }}/../common/tasks/configure_dhcp.yml"
- name: Configure dhcp
ansible.builtin.include_tasks: "{{ role_path }}/../common/tasks/configure_dhcp.yml"

- name: Delete the stanzas file
ansible.builtin.include_tasks: delete_stanzas.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
- name: Call dynamic db update for BMC
ansible.builtin.command: |
{{ python_version }} {{ update_db_dynamic_path }} {{ dynamic_ip_file }} {{ node_name }} {{ domain_name }}
{{ pxe_nic_subnet }} {{ network_data.bmc_network.static_range }} {{ network_data.bmc_network.dynamic_range }}
{{ pxe_nic_subnet }} {{ network_data.bmc_network.dynamic_conversion_static_range }} {{ network_data.bmc_network.dynamic_range }}
{{ reassignment_status }} {{ correlation_status }} {{ admin_uncorrelated_node_start_ip }}
{{ network_data.bmc_network.netmask_bits }} {{ network_data.admin_network.static_range }} {{ mtms_db_path }}
changed_when: false
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,9 @@

- name: Call static db update for BMC
ansible.builtin.command: |
{{ python_version }} {{ update_db_static_path }} {{ discover_ranges }}
{{ network_data.bmc_network.static_range }} {{ bmc_nic_subnet }} {{ network_data.bmc_network.dynamic_range }}
{{ static_ip_file }} {{ dynamic_ip_file }} {{ node_name }} {{ domain_name }}
{{ network_data.admin_network.static_range }} {{ pxe_nic_subnet }} {{ network_data.bmc_network.netmask_bits }}
{{ discover_ip_file }} {{ correlation_status }} {{ admin_uncorrelated_node_start_ip }} {{ mtms_db_path }}
{{ python_version }} {{ update_db_static_path }} {{ item.value.bmc_details.static_range }} {{ static_ip_file }} {{ item.key }}
{{ domain_name }} {{ network_data.admin_network.static_range }} {{ pxe_nic_subnet }}
{{ network_data.admin_network.netmask_bits }} {{ correlation_status }} {{ admin_uncorrelated_node_start_ip }} {{ mtms_db_path }}
{{ item.value.location_id }} {{ item.value.architecture }} {{ item.value.roles | join(',') }}
register: bmc_static_db_status
changed_when: false
19 changes: 7 additions & 12 deletions discovery/roles/discovery_mechanism/mtms/tasks/update_node_obj.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,31 +19,26 @@
cat {{ static_ip_file }} | {{ xcat_path }}/mkdef -z
failed_when: false
changed_when: false
when: bmc_static_status
when:
- item.value.bmc_static_status is defined
- item.value.bmc_static_status

- name: Create dynamic temp node objects
ansible.builtin.shell: >
set -o pipefail && \
cat {{ dynamic_ip_file }} | {{ xcat_path }}/mkdef -z
failed_when: false
changed_when: false
when: bmc_dynamic_status

- name: Create discover temp node objects
ansible.builtin.shell: >
set -o pipefail && \
cat {{ discover_ip_file }} | {{ xcat_path }}/mkdef -z
failed_when: false
changed_when: false
when: bmc_discover_range_status
when:
- '"first_layer" not in ansible_run_tags'
- discovery_mech_dynamic_bmc

- name: Delete the extra node objects
ansible.builtin.command: |
{{ python_version }} {{ delete_nodes }} {{ mtms_db_path }}
changed_when: false


- name: Call node update for BMC
ansible.builtin.command: |
{{ python_version }} {{ update_static_node_path }} {{ provision_os_image }} {{ mtms_db_path }}
{{ python_version }} {{ update_node_obj_path }} {{ provision_os_image }} {{ service_os_image }} {{ mtms_db_path }}
changed_when: false

This file was deleted.

10 changes: 3 additions & 7 deletions discovery/roles/discovery_mechanism/mtms/vars/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,23 +22,20 @@ dhcp_path: "/var/lib/dhcpd/dhcpd.leases"
xcat_path: /opt/xcat/bin

# Usage: bmc_discover_ranges.yml
discover_ip_file: "/opt/omnia/provision/discover.stanzas"
static_ip_file: "/opt/omnia/provision/static.stanzas"
dynamic_ip_file: "/opt/omnia/provision/dynamic.stanzas"

stanza_paths:
- "{{ discover_ip_file }}"
- "{{ static_ip_file }}"
- "{{ dynamic_ip_file }}"
file_perm: "0644"
bmcdiscover_python: "{{ provision_shared_library_path }}/mtms/bmc_discover_ranges.py"
static_mode: "static"
dynamic_mode: "dynamic"

# Usage: update_xcat_network_discovery_range.yml
update_bmc_network_python: "{{ provision_shared_library_path }}/mtms/update_bmc_network.py"

# Usage: bmc_static_discovery.yml
static_discovery_fail_msg: "Failed to discover any idrac's with the static range. Please check the range again"

# Usage: update_db.yml
update_db_static_path: "{{ provision_shared_library_path }}/mtms/mtms_db.py"
mtms_db_path: "{{ provision_shared_library_path }}/db_operations"
Expand All @@ -47,8 +44,7 @@ mtms_db_path: "{{ provision_shared_library_path }}/db_operations"
update_db_dynamic_path: "{{ provision_shared_library_path }}/mtms/mtms_dhcp_db.py"

# Usage: update_node_obj.yml
update_static_node_path: "{{ provision_shared_library_path }}/mtms/update_node_objects.py"
update_dynamic_node_path: "{{ provision_shared_library_path }}/mtms/update_node_objects.py"
update_node_obj_path: "{{ provision_shared_library_path }}/mtms/update_node_objects.py"
delete_nodes: "{{ provision_shared_library_path }}/mtms/delete_misc_node_obj.py"

# Usage: set_provision_image_mtms.yml
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
when:
- network_data.bmc_network.oim_nic_name | default("", true) | length > 0
- network_data.bmc_network.netmask_bits | default("", true) | length > 0
- network_data.bmc_network.static_range | default("", true) | length > 0
- network_data.bmc_network.dynamic_range | default("", true) | length > 0

- name: Warning - BMC network details incomplete
Expand Down
Loading