Tuesday, December 9, 2014

Is it possible to "hotplug" a CPU on a running Red Hat Enterprise Linux 5 system?

Issue

  • Is it possible to "hotplug" a CPU on a running Red Hat Enterprise Linux system?
  • How to dynamically enable or disable a CPU on a running system.


Resolution

Red Hat Enterprise Linux 5 supports the cpu-hotplug mechanism, which allows for CPUs to be dynamically disabled and re-enabled on a system without requiring a system reboot.
In order to disable a CPU core in a running machine, use the file /sys/devices/system/cpu/cpuX/online.

The following command will disable a CPU:
    # echo 0 > /sys/devices/system/cpu/cpuX/online
Where X is the ID of the CPU as determined from /proc/cpuinfo.

To re-enable the CPU, run:
   # echo 1 > /sys/devices/system/cpu/cpuX/online

Note: CPU hot-plugging will only work if physical hotplug is supported by the hardware.
Note: There are some architectures in which a CPU cannot be disabled due to a dependency on a certain CPU. In such cases you will notice that the /sys/devices/system/cpu/cpuN/online file is missing or not writeable.

For further details on CPU hotplugging, see this file:
/usr/share/doc/kernel-doc-2.6.18/Documentation/cpu-hotplug.txt
The documentation files are in the kernel-doc package, which can be installed from RHN.

LAUNCH JENKINS AGENT and DISCONNECT JENKINS AGENT using CURL post requests in LINUX / UNIX

WHY do we need this function?
This function helps when you have some changes made to .bashrc or .bash_profile and those changes need to be reloaded and taken into account by jenkins agent.



Bash Function to LAUNCH JENKINS AGENT and DISCONNECT JENKINS AGENT using CURL

function launch-jenkins-agent
{
        SERVERNAME="server00"
        #SERVERNAME="server01"
        echo "usage: launch-jenkins-agent "
        cat $1 | awk '{print "curl --form \"offlineMessage=Restarting_agent_after_P4_changes\" https://${SERVERNAME}/computer/"$1"/launchSlaveAgent "}' |sh -x
}


function disconnect-jenkins-agent
{
        SERVERNAME="server00"
        #SERVERNAME="server01"
        echo "usage: disconnect-jenkins-agent "
        cat $1 | awk '{print "curl --form \"offlineMessage=Restarting_agent_after_P4_changes\" https://${SERVERNAME}/computer/"$1"/launchSlaveAgent "}' |sh -x

}


FUNCTION USAGE:
# disconnect-jenkins-agent  /tmp/multiple-hostnames
# launch-jenkins-agent   /tmp/multiple-hostname



HTTP POST and GET using cURL in Linux

Linux provides a nice little command which makes our lives a lot easier.


GET:

with JSON:
curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://hostname/resource

with XML:
curl -H "Accept: application/xml" -H "Content-Type: application/xml" -X GET http://hostname/resource


POST:
For posting data:
curl --data "param1=value1&param2=value2" http://hostname/resource

For file upload:
curl --form "fileupload=@filename.txt" http://hostname/resource

RESTful HTTP Post:
curl -X POST -d @filename http://hostname/resource

For logging into a site (auth):
curl -d "username=admin&password=admin&submit=Login" --dump-header headers http://localhost/Login
curl -L -b headers http://localhost/
 
 
In cases where the webservice responses are in JSON then it might be
 more useful to see the results in a clean JSON format instead of a very
 long string. Just add | grep }| python -mjson.tool  to the end of curl 
commands here is two examples:

GET approach with JSON result
curl -i -H "Accept: application/json" http://someHostName/someEndpoint | grep }| python -mjson.tool
POST approach with JSON result
curl -X POST -H "Accept: Application/json" -H "Content-Type: application/json" http://someHostName/someEndpoint -d '{"id":"IDVALUE","name":"Mike"}' | grep }| python -mjson.tool

enter image description here
 
 

Example:

curl --header "X-MyHeader: 123" www.google.com
You can see the request that curl sent by adding the -v option.
 
 
Ref: http://stackoverflow.com/questions/14978411/http-post-and-get-using-curl-in-linux