PK œqhYî¶J‚ßF ßF ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
Dir : /proc/self/root/opt/saltstack/salt/lib/python3.10/site-packages/salt/grains/ |
Server: Linux ngx353.inmotionhosting.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64 IP: 209.182.202.254 |
Dir : //proc/self/root/opt/saltstack/salt/lib/python3.10/site-packages/salt/grains/fx2.py |
""" Generate baseline proxy minion grains for Dell FX2 chassis. The challenge is that most of Salt isn't bootstrapped yet, so we need to repeat a bunch of things that would normally happen in proxy/fx2.py--just enough to get data from the chassis to include in grains. """ import logging import salt.modules.cmdmod import salt.modules.dracr import salt.proxy.fx2 import salt.utils.platform __proxyenabled__ = ["fx2"] __virtualname__ = "fx2" logger = logging.getLogger(__file__) GRAINS_CACHE = {} def __virtual__(): if ( salt.utils.platform.is_proxy() and "proxy" in __opts__ and __opts__["proxy"].get("proxytype") == "fx2" ): return __virtualname__ return False def _find_credentials(): """ Cycle through all the possible credentials and return the first one that works """ usernames = [] usernames.append(__pillar__["proxy"].get("admin_username", "root")) if "fallback_admin_username" in __pillar__.get("proxy"): usernames.append(__pillar__["proxy"].get("fallback_admin_username")) for user in usernames: for pwd in __pillar__["proxy"]["passwords"]: r = salt.modules.dracr.get_chassis_name( host=__pillar__["proxy"]["host"], admin_username=user, admin_password=pwd, ) # Retcode will be present if the chassis_name call failed try: if r.get("retcode", None) is None: __opts__["proxy"]["admin_username"] = user __opts__["proxy"]["admin_password"] = pwd return (user, pwd) except AttributeError: # Then the above was a string, and we can return the username # and password __opts__["proxy"]["admin_username"] = user __opts__["proxy"]["admin_password"] = pwd return (user, pwd) logger.debug( "grains fx2.find_credentials found no valid credentials, using Dell default" ) return ("root", "calvin") def _grains(): """ Get the grains from the proxied device """ (username, password) = _find_credentials() r = salt.modules.dracr.system_info( host=__pillar__["proxy"]["host"], admin_username=username, admin_password=password, ) if r.get("retcode", 0) == 0: GRAINS_CACHE = r else: GRAINS_CACHE = {} GRAINS_CACHE.update( salt.modules.dracr.inventory( host=__pillar__["proxy"]["host"], admin_username=username, admin_password=password, ) ) return GRAINS_CACHE def fx2(): return _grains() def kernel(): return {"kernel": "proxy"} def location(): if not GRAINS_CACHE: GRAINS_CACHE.update(_grains()) try: return { "location": GRAINS_CACHE.get("Chassis Information").get("Chassis Location") } except AttributeError: return {"location": "Unknown"} def os_family(): return {"os_family": "proxy"} def os_data(): return {"os_data": "Unknown"}