
    Vh                         d dl mZmZmZ eZdZdZdZd dl	m
Z
 d dlZd dlZ ej                  d      Zd Zd	 Zd
 Zd Zedk(  r e        yy)    )absolute_importdivisionprint_functiona}  
module: rhsm_release
short_description: Set or Unset RHSM Release version
description:
  - Sets or unsets the release version used by RHSM repositories.
notes:
  - This module will fail on an unregistered system. Use the M(community.general.redhat_subscription) module to register a
    system prior to setting the RHSM release.
  - It is possible to interact with C(subscription-manager) only as root, so root permissions are required to successfully
    run this module.
requirements:
  - Red Hat Enterprise Linux 6+ with subscription-manager installed
extends_documentation_fragment:
  - community.general.attributes
attributes:
  check_mode:
    support: full
  diff_mode:
    support: none
options:
  release:
    description:
      - RHSM release version to use.
      - To unset either pass V(null) for this option, or omit this option.
    type: str
author:
  - Sean Myers (@seandst)
a[  
# Set release version to 7.1
- name: Set RHSM release version
  community.general.rhsm_release:
    release: "7.1"

# Set release version to 6Server
- name: Set RHSM release version
  community.general.rhsm_release:
    release: "6Server"

# Unset release version
- name: Unset RHSM release release
  community.general.rhsm_release:
    release:
zi
current_release:
  description: The current RHSM release version value.
  returned: success
  type: str
)AnsibleModuleNz3\b\d{1,2}(?:\.\d{1,2}|Server|Client|Workstation|)\bc                 p    | j                  dd      }|dgt        |      z   }| j                  |dd      S )Nzsubscription-managerT)requiredreleaseF)check_rcexpand_user_and_vars)get_bin_pathlistrun_command)moduleargssm_bincmds       r/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/community/general/plugins/modules/rhsm_release.py_sm_releaser   J   sE       !7$ GF9
T

*CcDuMM    c                 |    t        | d      \  }}}	 t        j                  |      d   }|S # t        $ r d }Y |S w xY w)Nz--showr   )r   release_matcherfindall
IndexError)r   rcouterrmatchs        r   get_releaser   S   sP    vx0LBS'',Q/
 L	  L	s   , ;;c                 ,    |d}nd|f}t        | g| S )N)z--unsetz--set)r   )r   r	   r   s      r   set_releaser    _   s&    !v%%%r   c                     t        t        t        d            d      } t        j                         dk7  r| j	                  d       | j
                  d	   }|r6t        j                  |      s!| j	                  d
j                  |             t        |       }||k7  }| j                  s|rt        | |       |}| j                  ||       y )Nstr)type)r	   T)argument_specsupports_check_moder   zPInteracting with subscription-manager requires root permissions ('become: true'))msgr	   z,"{0}" does not appear to be a valid release.)current_releasechanged)r   dictosgetuid	fail_jsonparamsr   r   formatr   
check_moder    	exit_json)r   target_releaser'   r(   s       r   mainr2   i   s    e$
 !	F 
yy{ab 	 	
 ]]9-N o55nEKRRSabc "&)O0GFN+ )
_gFr   __main__)
__future__r   r   r   r#   __metaclass__DOCUMENTATIONEXAMPLESRETURNansible.module_utils.basicr   r*   recompiler   r   r   r    r2   __name__ r   r   <module>r>      sq    C B:"
 5 	 	 "**STN	&GB zF r   