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)