def set_pxe_onetime_boot_device(self, context): csapi = CloudShellAPISession( host=context.connectivity.server_address, token_id=context.connectivity.admin_auth_token, username=None, password=None, domain=CloudShellSessionContext._get_domain(context)) url = 'https://%s/redfish/v1/Systems/System.Embedded.1' % self.idrac_ip payload = {"Boot": {"BootSourceOverrideTarget": "Pxe"}} headers = {'content-type': 'application/json'} response = requests.patch(url, data=json.dumps(payload), headers=headers, verify=False, auth=(self.idrac_username, self.idrac_password)) data = response.json() statusCode = response.status_code if statusCode == 200: msg = "%s set next boot onetime boot device to: Pxe" % self.resourcename self.logger.info(msg) csapi.WriteMessageToReservationOutput( context.reservation.reservation_id, msg) csapi.SetResourceLiveStatus(self.resourcename, 'PXE Set', 'Set to PXE boot') else: detail_message = str(response.__dict__) msg = "%s set boot command failed, errror code is %s, %s" % ( self.resourcename, statusCode, detail_message) self.logger.info(msg) csapi.WriteMessageToReservationOutput( context.reservation.reservation_id, msg)
def ping_check(self, context): try: csapi = CloudShellAPISession( host=context.connectivity.server_address, token_id=context.connectivity.admin_auth_token, username=None, password=None, domain=CloudShellSessionContext._get_domain(context)) ping_ret_code = subprocess.call( ['ping', '-n', '2', self.resourceaddress], stdout=open(os.devnull, 'w'), stderr=open(os.devnull, 'w')) tstamp = datetime.datetime.now().strftime("%I:%M%p") + " UTC" if ping_ret_code == 0: msg = "%s ping successful" % self.resourcename msg1 = "Ping successful at %s" % (tstamp) csapi.SetResourceLiveStatus(self.resourcename, 'Ping OK', msg1) else: msg = "%s did not answer ping. Still booting?" % ( self.resourcename) msg1 = "Ping unsuccessful at %s" % (tstamp) csapi.SetResourceLiveStatus(self.resourcename, 'Info', msg1) self.logger.info(msg) csapi.WriteMessageToReservationOutput( context.reservation.reservation_id, msg) except Exception as ex: msg = "Ping call failed, %s" % str(ex) self.logger.error(msg) csapi.WriteMessageToReservationOutput( context.reservation.reservation_id, msg) msg = "Ping call failed at %s" % (tstamp) csapi.SetResourceLiveStatus(self.resourcename, 'Error', msg)
def power_off(self, context): tstamp = datetime.datetime.now().strftime("%I:%M%p") + " UTC" csapi = CloudShellAPISession( host=context.connectivity.server_address, token_id=context.connectivity.admin_auth_token, username=None, password=None, domain=CloudShellSessionContext._get_domain(context)) url = 'https://%s/redfish/v1/Systems/System.Embedded.1/Actions/ComputerSystem.Reset' % self.idrac_ip payload = {'ResetType': 'ForceOff'} headers = {'content-type': 'application/json'} response = requests.post(url, data=json.dumps(payload), headers=headers, verify=False, auth=(self.idrac_username, self.idrac_password)) statusCode = response.status_code if statusCode == 204: msg = "%s powering OFF for reboot" % self.resourcename self.logger.info(msg) csapi.WriteMessageToReservationOutput( context.reservation.reservation_id, msg) msg = "Powering OFF for reboot at %s" % (tstamp) csapi.SetResourceLiveStatus(self.resourcename, 'Power OFF', msg) else: msg = "%s - failed to power OFF server, status code: %s, %s" % \ (self.resourcename, statusCode, str(response.json())) self.logger.error(msg) csapi.WriteMessageToReservationOutput( context.reservation.reservation_id, msg) msg = "Failed to power OFF at %s" % (tstamp) csapi.SetResourceLiveStatus(self.resourcename, 'Error', msg) sys.exit()
def get_next_boot_current_setting(self, context): """ :param ResourceCommandContext context: gg """ csapi = CloudShellAPISession( host=context.connectivity.server_address, token_id=context.connectivity.admin_auth_token, username=None, password=None, domain=CloudShellSessionContext._get_domain(context)) response = requests.get( 'https://%s/redfish/v1/Systems/System.Embedded.1/' % self.idrac_ip, verify=False, auth=(self.idrac_username, self.idrac_password)) data = response.json() #print("\n-Supported values for next server reboot, one time boot:\n") #for i in data[u'Boot'][u'*****@*****.**']: # print(i) msg = "%s next reboot, one time setting: %s" % ( self.resourcename, data[u'Boot'][u'BootSourceOverrideTarget']) self.logger.info(msg) csapi.WriteMessageToReservationOutput( context.reservation.reservation_id, msg)
def show_power_state(self, context): response = requests.get( 'https://%s/redfish/v1/Systems/System.Embedded.1/' % self.idrac_ip, verify=False, auth=(self.idrac_username, self.idrac_password)) data = response.json() tstamp = datetime.datetime.now().strftime("%I:%M%p") + " UTC" msg = "%s power found %s at %s" % (self.resourcename, data[u'PowerState'], tstamp) self.logger.info(msg) csapi = CloudShellAPISession( host=context.connectivity.server_address, token_id=context.connectivity.admin_auth_token, username=None, password=None, domain=CloudShellSessionContext._get_domain(context)) csapi.WriteMessageToReservationOutput( context.reservation.reservation_id, msg) msg = "Power found %s at %s" % (data[u'PowerState'], tstamp) if data[u'PowerState'] == "On": csapi.SetResourceLiveStatus(self.resourcename, 'Power ON', msg) else: csapi.SetResourceLiveStatus(self.resourcename, 'Power OFF', msg)
def reboot_server(self, context): csapi = CloudShellAPISession( host=context.connectivity.server_address, token_id=context.connectivity.admin_auth_token, username=None, password=None, domain=CloudShellSessionContext._get_domain(context)) response = requests.get( 'https://%s/redfish/v1/Systems/System.Embedded.1/' % self.idrac_ip, verify=False, auth=(self.idrac_username, self.idrac_password)) data = response.json() #print("\n- WARNING, Current server power state is: %s" % data[u'PowerState']) if data[u'PowerState'] == "On": url = 'https://%s/redfish/v1/Systems/System.Embedded.1/Actions/ComputerSystem.Reset' % self.idrac_ip payload = {'ResetType': 'ForceOff'} headers = {'content-type': 'application/json'} response = requests.post(url, data=json.dumps(payload), headers=headers, verify=False, auth=(self.idrac_username, self.idrac_password)) statusCode = response.status_code tstamp = datetime.datetime.now().strftime("%I:%M%p") + " UTC" if statusCode == 204: msg = "%s powering OFF for reboot" % self.resourcename self.logger.info(msg) csapi.WriteMessageToReservationOutput( context.reservation.reservation_id, msg) msg = "Powering OFF for reboot at %s" % (tstamp) csapi.SetResourceLiveStatus(self.resourcename, 'Progress 50', msg) else: msg = "%s - failed to power OFF (reboot), status code: %s, %s" % \ (self.resourcename, statusCode, str(response.json())) self.logger.info(msg) csapi.WriteMessageToReservationOutput( context.reservation.reservation_id, msg) csapi.SetResourceLiveStatus(self.resourcename, 'Error', 'Failed to power off for reboot') sys.exit() payload = {'ResetType': 'On'} headers = {'content-type': 'application/json'} response = requests.post(url, data=json.dumps(payload), headers=headers, verify=False, auth=('root', 'calvin')) tstamp = datetime.datetime.now().strftime("%I:%M%p") + " UTC" statusCode = response.status_code if statusCode == 204: msg = "%s powered ON (reboot)" % self.resourcename self.logger.info(msg) csapi.WriteMessageToReservationOutput( context.reservation.reservation_id, msg) msg = "Powered ON (reboot) at %s" % (tstamp) csapi.SetResourceLiveStatus(self.resourcename, 'Power ON', msg) else: msg = "%s - failed to power ON server, status code: %s, %s" % \ (self.resourcename, statusCode, str(response.json())) self.logger.info(msg) csapi.WriteMessageToReservationOutput( context.reservation.reservation_id, msg) msg = "Failed to power ON at %s" % (tstamp) csapi.SetResourceLiveStatus(self.resourcename, 'Error', msg) sys.exit() else: url = 'https://%s/redfish/v1/Systems/System.Embedded.1/Actions/ComputerSystem.Reset' % self.idrac_ip payload = {'ResetType': 'On'} headers = {'content-type': 'application/json'} response = requests.post(url, data=json.dumps(payload), headers=headers, verify=False, auth=('root', 'calvin')) tstamp = datetime.datetime.now().strftime("%I:%M%p") + " UTC" statusCode = response.status_code if statusCode == 204: msg = "%s powered ON (reboot)" % self.resourcename self.logger.info(msg) csapi.WriteMessageToReservationOutput( context.reservation.reservation_id, msg) msg = "Powered ON at %s" % (tstamp) csapi.SetResourceLiveStatus(self.resourcename, 'Power ON', msg) else: msg = "%s - failed to power ON, status code: %s, %s" % \ (self.resourcename, statusCode, str(response.json())) self.logger.info(msg) csapi.WriteMessageToReservationOutput( context.reservation.reservation_id, msg) msg = "Failed to power ON at %s" % (tstamp) csapi.SetResourceLiveStatus(self.resourcename, 'Error', msg)