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

[Integration][omevv_baseline_profile] - Create, Modify and Delete #767

Merged
merged 17 commits into from
Nov 26, 2024
Merged
Show file tree
Hide file tree
Changes from 8 commits
Commits
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
@@ -0,0 +1,3 @@
---
testcase: '[^_].*'
test_items: []
Original file line number Diff line number Diff line change
@@ -0,0 +1,218 @@
- ' This module allows you to create, modify, or delete an'
- ' OpenManage Enterprise Integration for VMware Center (OMEVV)'
- ' baseline profile.'
- ''
- 'ADDED IN: version 9.9.0 of dellemc.openmanage'
- ''
- 'OPTIONS (= is mandatory):'
- ''
- '- ca_path'
- ' The Privacy Enhanced Mail (PEM) file that contains a CA'
- ' certificate to be used for the validation.'
- ' default: null'
- ' type: path'
- ''
- '- cluster'
- ' List of cluster(s) for baseline profile creation.'
- ' This parameter is required when `state'' is `present'' and while'
- ' creating a new profile.'
- ' default: null'
- ' elements: str'
- ' type: list'
- ''
- '- days'
- ' Required days of a week on when the job must run.'
- ' This is required when `state'' is `present'' and while creating'
- ' a new profile.'
- ' choices: [sunday, monday, tuesday, wednesday, thursday, friday, saturday,
all]'
- ' default: null'
- ' elements: str'
- ' type: list'
- ''
- '- description'
- ' Description of OMEVV baseline profile.'
- ' default: null'
- ' type: str'
- ''
- = hostname
- ' IP address or hostname of the OpenManage Enterprise Modular.'
- ' type: str'
- ''
- '- job_wait'
- ' Whether to wait till completion of the job.'
- ' default: true'
- ' type: bool'
- ''
- '- job_wait_timeout'
- ' The maximum wait time of `job_wait'' in seconds. The job is'
- ' tracked only for this duration.'
- ' This is applicable when `job_wait'' is `true''.'
- ' default: 1200'
- ' type: int'
- ''
- = name
- ' Name of the OMEVV baseline profile.'
- ' This parameter is required for modification operation when'
- ' `state'' is `absent''.'
- ' type: str'
- ''
- '- port'
- ' OpenManage Enterprise HTTPS port.'
- ' default: 443'
- ' type: int'
- ''
- '- repository_profile'
- ' Repository profile for baseline creation.'
- ' This is required when `state'' is `present'' and while creating'
- ' a new profile.'
- ' default: null'
- ' type: str'
- ''
- '- state'
- ' `present'' creates an OMEVV baseline profile or modifies an'
- ' existing profile if the profile with the same name already'
- ' exists.'
- ' `absent'' deletes the OMEVV baseline profile.'
- ' `repository_profile'', `cluster'', `days'' and `time'' is required'
- ' when creating a new baseline profile.'
- ' Either `profile_name'' or `profile_id'' is required when `state'''
- ' is `absent''.'
- ' choices: [present, absent]'
- ' default: present'
- ' type: str'
- ''
- '- time'
- ' Time at when the job must run, and is 24 hours format.'
- ' The format must be HH:MM.'
- ' This is required when `state'' is `present'' and while creating'
- ' a new profile.'
- ' default: null'
- ' type: str'
- ''
- '- timeout'
- ' The socket level timeout in seconds.'
- ' default: 30'
- ' type: int'
- ''
- '- validate_certs'
- ' Whether to check SSL certificate. - If `true'', the SSL'
- ' certificates will be validated. - If `false'', the SSL'
- ' certificates will not be validated.'
- ' default: true'
- ' type: bool'
- ''
- '- vcenter_password'
- ' Password for OpenManage Enterprise Integration for VMware'
- ' vCenter (OMEVV).'
- ' If the password is not provided, then the environment variable'
- ' `OMEVV_VCENTER_PASSWORD'' is used.'
- ' Example: export OMEVV_VCENTER_PASSWORD=password'
- ' default: null'
- ' type: str'
- ''
- '- vcenter_username'
- ' Username for OpenManage Enterprise Integration for VMware'
- ' vCenter (OMEVV).'
- ' If the username is not provided, then the environment variable'
- ' `OMEVV_VCENTER_USERNAME'' is used.'
- ' Example: export OMEVV_VCENTER_USERNAME=username'
- ' default: null'
- ' type: str'
- ''
- '- vcenter_uuid'
- ' Universally Unique Identifier (UUID) of vCenter.'
- ' vCenter UUID details can be retrieved using'
- ' [dellemc.openmanage.omevv_vcenter_info] module.'
- ' If UUID is not provided, then the environment variable'
- ' `OMEVV_VCENTER_UUID'' is used.'
- ' Example: export OMEVV_VCENTER_UUID=uuid'
- ' default: null'
- ' type: str'
- ''
- ''
- 'ATTRIBUTES:'
- ''
- ' check_mode:'
- ' description: Runs task to validate without performing action on the target
machine.'
- ' support: full'
- ' diff_mode:'
- ' description: Runs the task to report the changes that are made or the
changes that'
- ' must be applied.'
- ' support: full'
- ''
- 'NOTES:'
- ' * Run this module from a system that has direct access to'
- ' Dell OpenManage Enterprise.'
- ''
- ''
- 'REQUIREMENTS: python >= 3.9.6'
- ''
- 'AUTHOR: Saksham Nautiyal (@Saksham-Nautiyal)'
- ''
- 'EXAMPLES:'
- ''
- '---'
- '- name: Create a baseline profile for multiple cluster'
- ' dellemc.openmanage.omevv_baseline_profile:'
- ' hostname: "192.168.0.1"'
- ' vcenter_uuid: "xxxxx"'
- ' vcenter_username: "username"'
- ' vcenter_password: "password"'
- ' ca_path: "path/to/ca_file"'
- ' state: "present"'
- ' name: "profile-1"'
- ' repository_profile: "repository-profile"'
- ' cluster:'
- ' - "cluster-1"'
- ' - "cluster-2"'
- ' days:'
- ' - "sunday"'
- ' - "wednesday"'
- ' time: "22:10"'
- ''
- '- name: Modify a baseline profile'
- ' dellemc.openmanage.omevv_baseline_profile:'
- ' hostname: "192.168.0.1"'
- ' vcenter_uuid: "xxxxx"'
- ' vcenter_username: "username"'
- ' vcenter_password: "password"'
- ' ca_path: "path/to/ca_file"'
- ' state: "present"'
- ' name: "profile-1"'
- ' new_name: "profile-newname"'
- ' repository_profile: "repository-profile"'
- ' cluster:'
- ' - "cluster-1"'
- ' - "cluster-2"'
- ' days:'
- ' - "sunday"'
- ' time: "05:00"'
- ''
- '- name: Delete a specific baseline profile'
- ' dellemc.openmanage.omevv_baseline_profile:'
- ' hostname: "192.168.0.1"'
- ' vcenter_uuid: "xxxxx"'
- ' vcenter_username: "username"'
- ' vcenter_password: "password"'
- ' ca_path: "path/to/ca_file"'
- ' state: "absent"'
- ' name: "profile-1"'
- ''
- ''
- 'RETURN VALUES:'
- '- error_info'
- ' Details of the HTTP Error.'
- ' returned: on HTTP error'
- ' sample:'
- ' errorCode: ''18001'''
- ' message: Baseline profile with name Test already exists.'
- ' type: dict'
- ''
- '- msg'
- ' Status of the profile operation.'
- ' returned: always'
- ' sample: Successfully created the OMEVV baseline profile.'
- ' type: str'
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
---
dependencies:
- prepare_omevv_registration
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
---
- name: Collect all test cases
ansible.builtin.find:
paths: '{{ role_path }}/tests'
patterns: '{{ testcase }}.yaml'
use_regex: true
register: test_cases
delegate_to: localhost

- name: Set test_items
ansible.builtin.set_fact:
test_items: "{{ test_cases.files | map(attribute='path') | list }}"

- name: Fail if no test cases are found as per pattern.
ansible.builtin.fail:
msg: "Could not find test cases to run!!!"
when: not test_items|length > 0

- name: Run test case
ansible.builtin.include_tasks: '{{ test_case_to_run }}'
with_items: '{{ test_items }}'
loop_control:
loop_var: test_case_to_run
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
---
- block:
- name: Delete baseline profile
dellemc.openmanage.omevv_baseline_profile:
state: absent
name: OMAM_Baseline_Profile
register: delete_baseline_profile
when: delete_baseline_trigger is defined

- name: Verify task status - Delete baseline profile
ansible.builtin.assert:
that:
- delete_baseline_profile.changed
- 'delete_baseline_profile.msg == "Successfully deleted the baseline
profile."'
when: delete_baseline_trigger is defined

- name: Delete Repository profile - 1
dellemc.openmanage.omevv_baseline_profile:
state: absent
name: OMAM_Firm_Repo
register: delete_firm_repo_profile
when: delete_repository_profile_1_trigger is defined

- name: Verify task status - Delete baseline profile
ansible.builtin.assert:
that:
- delete_firm_repo_profile.changed
- 'delete_firm_repo_profile.msg == "Successfully deleted the OMEVV
firmware repository profile."'
when: delete_repository_profile_2_trigger is defined

- name: Delete Repository profile - 2
dellemc.openmanage.omevv_baseline_profile:
state: absent
name: OMAM_Firm_Repo
register: delete_firm_repo_profile
when: delete_repository_profile_1_trigger is defined

- name: Verify task status - Delete baseline profile
ansible.builtin.assert:
that:
- delete_firm_repo_profile.changed
- 'delete_firm_repo_profile.msg == "Successfully deleted the OMEVV
firmware repository profile."'
when: delete_repository_profile_2_trigger is defined

module_defaults:
dellemc.openmanage.omevv_baseline_profile:
validate_certs: "{{ validate_certs }}"
hostname: "{{ hostname | ansible.utils.ipwrap }}"
vcenter_username: "{{ vcenter_username }}"
vcenter_password: "{{ vcenter_password }}"
vcenter_uuid: "{{ uuid }}"

dellemc.openmanage.omevv_firmware_repository_profile:
validate_certs: "{{ validate_certs }}"
hostname: "{{ hostname | ansible.utils.ipwrap }}"
vcenter_username: "{{ vcenter_username }}"
vcenter_password: "{{ vcenter_password }}"
vcenter_uuid: "{{ uuid }}"
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
# Create repository profile and baseline profile
---
- block:
- name: Create firmware repository profile - 1
dellemc.openmanage.omevv_firmware_repository_profile:
name: "OMAM_Firm_Repo"
description: "Firmware repository profile created by OMAM"
state: present
catalog_path: "{{ http_share_dir_path }}/
omevv_baseline_profile_catalog.xml"
protocol_type: HTTP
register: firm_repo_1
when: repository_profile_1_trigger is defined

- name: Verify task status - Create firmware repository profile - 1
ansible.builtin.assert:
that:
- firm_repo_1.changed is true
- 'firm_repo_1.msg == "Successfully created the OMEVV firmware
repository profile."'
- firm_repo_1.profile_info.status == "Success"
when: repository_profile_1_trigger is defined

- name: Create firmware repository profile - 2
dellemc.openmanage.omevv_firmware_repository_profile:
name: "OMAM_Modify_Firm_Repo"
description: "Firmware repository profile created by OMAM"
state: present
catalog_path: "{{ http_share_dir_path }}/
omevv_baseline_profile_catalog.xml"
protocol_type: HTTP
register: firm_repo_2
when: repository_profile_2_trigger is defined

- name: Verify task status - Create firmware repository profile - 2
ansible.builtin.assert:
that:
- firm_repo_2.changed is true
- 'firm_repo_2.msg == "Successfully created the OMEVV firmware
repository profile."'
- firm_repo_2.profile_info.status == "Success"
when: repository_profile_2_trigger is defined

- name: Create a baseline profile with single cluster
dellemc.openmanage.omevv_baseline_profile:
state: present
name: OMAM_Baseline_Profile
repository_profile: OMAM_Firm_Repo
cluster: OMAM-Cluster-1
days:
- all
time: "12:00"
register: result_baseline
when: baseline_trigger is defined

- name: Verify task status - Create a baseline profile with single cluster
ansible.builtin.assert:
that:
- result_baseline.changed is true
- result_baseline.msg == "Successfully created the baseline profile."
- result_baseline.baseline_profile_info
when: baseline_trigger is defined

module_defaults:
dellemc.openmanage.omevv_firmware_repository_profile:
validate_certs: "{{ validate_certs }}"
hostname: "{{ hostname | ansible.utils.ipwrap }}"
vcenter_username: "{{ vcenter_username }}"
vcenter_password: "{{ vcenter_password }}"
vcenter_uuid: "{{ uuid }}"

dellemc.openmanage.omevv_baseline_profile:
validate_certs: "{{ validate_certs }}"
hostname: "{{ hostname | ansible.utils.ipwrap }}"
vcenter_username: "{{ vcenter_username }}"
vcenter_password: "{{ vcenter_password }}"
vcenter_uuid: "{{ uuid }}"
Loading
Loading