docs: def elcm_profile_set(irmc_info, input_data):
      """send an eLCM request to set param values
  
      To apply param values, a new session is spawned with status 'running'.
      When values are applied or error, the session ends.
  
      :param irmc_info: node info
      :param input_data: param values to apply, eg.
          {
            'Server':
            {
              'SystemConfig':
              {
                'BiosConfig':
                {
                  '@Processing': 'execute',
                  -- config data --
                }
              }
            }
          }
      :returns: dict object of session info if succeed
          {
            'Session':
            {
              'Id': id
              'Status': 'activated'
              ...
            }
          }
      :raises: SCCIClientError if SCCI failed
      """
      # Prepare the data to apply
      if isinstance(input_data, dict):
          data = jsonutils.dumps(input_data)
      else:
          data = input_data
  
      # Send POST request to the server
      # NOTE: This task may take time, so set a timeout
      _irmc_info = dict(irmc_info)
      _irmc_info['irmc_client_timeout'] = PROFILE_SET_TIMEOUT
  
      content_type = 'application/x-www-form-urlencoded'
      if input_data['Server'].get('HWConfigurationIrmc'):
          content_type = 'application/json'
      resp = elcm_request(_irmc_info,
                          method='POST',
                          path=URL_PATH_PROFILE_MGMT + 'set',
                          headers={'Content-type': content_type},
                          data=data)
  
      if resp.status_code == 202:
          return _parse_elcm_response_body_as_json(resp)
      else:
          raise scci.SCCIClientError(('Failed to apply param values with '
                                      'error code %(error)s' %
                                      {'error': resp.status_code}))