11import argparse
22import json
3- import logging
43import logging .config
4+ import logging
55import os
66
77import sushy
88
9- from understack_workflows .bmc_password_standard import standard_password
10- from understack_workflows .helpers import credential
9+ from understack_workflows .bmc import Bmc
10+ from understack_workflows .bmc import bmc_for_ip_address
1111from understack_workflows .helpers import setup_logger
1212
1313logger = setup_logger (__name__ )
1414
1515log_config = {
16- " version" : 1 ,
17- " disable_existing_loggers" : False ,
18- " loggers" : {
19- "__main__" : {" level" : " INFO" },
20- "sushy.main" : {" level" : " INFO" },
21- "sushy.resources.base" : {" level" : " INFO" },
22- "sushy.connector" : {" level" : " INFO" },
23- "urllib3.connectionpool" : {" level" : " INFO" },
24- },
16+ ' version' : 1 ,
17+ ' disable_existing_loggers' : False ,
18+ ' loggers' : {
19+ "__main__" : {' level' : ' INFO' },
20+ "sushy.main" : {' level' : ' INFO' },
21+ "sushy.resources.base" : {' level' : ' INFO' },
22+ "sushy.connector" : {' level' : ' INFO' },
23+ "urllib3.connectionpool" : {' level' : ' INFO' },
24+ }
2525}
2626
2727logging .config .dictConfig (log_config )
2828
29-
3029def main ():
3130 """Export RAID details for a BMC using Sushy.
3231
@@ -41,9 +40,11 @@ def main():
4140 args = argument_parser ().parse_args ()
4241
4342 ip_address = args .ip_address
43+ password = args .password or None
4444 logger .debug ("%s starting for ip_address=%s" , __file__ , ip_address )
4545
46- client = client_for_ip_address (ip_address = ip_address )
46+ bmc = bmc_for_ip_address (ip_address = ip_address , password = password )
47+ client = bmc .sushy ()
4748
4849 # argo workflows captures stdout as the results which we can use
4950 # to return the device UUID
@@ -56,7 +57,7 @@ def argument_parser():
5657 prog = os .path .basename (__file__ ), description = "Gather RAID Device info."
5758 )
5859 parser .add_argument ("--ip-address" , type = str , required = True , help = "BMC IP" )
59- parser .add_argument ("--password" , type = str , required = False , help = "Custom Password" )
60+ parser .add_argument ("--password" , type = str , required = False , help = "Password" , default = None )
6061 return parser
6162
6263
@@ -74,26 +75,5 @@ def parse_controller_details(client) -> dict:
7475 return result
7576
7677
77- def client_for_ip_address (
78- ip_address : str , username : str = "root" , password : str | None = None
79- ) -> sushy .Sushy :
80- """Retreive a Sushy session for BMC return as client object.
81-
82- If no password is supplied then we use a conventional BMC standard one
83- which is derived from the IP address and the BMC_MASTER secret key.
84-
85- If no username is supplied then the username "root" is used.
86- """
87- if password is None :
88- bmc_master = os .getenv ("BMC_MASTER" ) or credential ("bmc_master" , "key" )
89- password = standard_password (ip_address , bmc_master )
90-
91- base_url = "https://" + ip_address
92- client = sushy .Sushy (
93- base_url = base_url , username = username , password = password , verify = False
94- )
95- return client
96-
97-
9878if __name__ == "__main__" :
9979 main ()
0 commit comments