Can I use some kind of script to create image and ghost my lab machines
-
This is possible if we directly interact with the database and certain specific fog web files.
We can query the DB to get the ID of the host using it’s name, and create a job in the DB. Then, we call the below link to do a WOL.
http://x.x.x.x/fog/management/index.php?sub=wakeEmUp&mac=aa:bb:cc:dd:ee:ff
I’ve been planning on doing something like this at my house for automated testing purposes - and I’d be glad to work out the details with you here.
-
It is my second post with workaround today
Here is my working solution to execute deploy task for host with ID=2 from commandline.
So, Jenkins support is not a problem from now on.
I used curl with cookies file to achieve that.curl -c cookie.txt --request POST --url "http://<your_IP>/fog/management/index.php" --header "content-type: multipart/form-data" --form "uname=fog" --form "upass=password" --form "ulang=English" --form "login=Login" curl -b cookie.txt --request POST --url "http://<your_IP>/fog/management/index.php?node=host&sub=deploy&id=2&type=1" --header "content-type: multipart/form-data" --form "wol=on" --form "scheduleType=instant" --form "taskhosts[]=2"
-
@AndrewG78 fog has an api now that can do this. I’ll dig up the commands I have as examples.
-
@Wayne Workman
Thx, but did I miss some API documentation?
I was looking for it here and on the wiki, but found nothing. -
O’right
Got it here.
https://news.fogproject.org/simplified-api-documentation/
Perhaps, it should be included on the wiki…EDIT:
Hmmm. I think that it would be nice to have some multicast deployment examples.
DOcs are missing this information.
I’m getting
{
“error”: “Invalid tasking type passed”
}
whilst I use proper ID=8 for multicast -
I think I want to push the bootstrap branch into the working branch and start getting that tested as well. I know the “GUI” side is totally different from the API side, but I’ve been improving and including new things that to the API side of things as well. As I progress I will likely add in container elements to help refine searches and what not, but I need documentation and I simply cannot do it alone unfortunately.
I’ve tried very hard to make the API as basic as possible to ensure it can get maximum exposure with relative simplicity.
-
Cancel all tasks of types 1 or 2 curl --silent -X DELETE -H 'content-type: application/json' -H 'fog-user-token: ZjBkMmE3YmI5NmUzZDcxYTliYzNkZTc4MmJhNTFiYTQ3Mzc2MTg5MzYxMThmNjA5NDYyMjllMTA5YzE0NWUxMjFiNzkyMTc5OTMwZjFhZGM5NWIxMTc3YWZmNTU2MmMwYjFhNjg0NjVmMTkyMGZkNDQxYmY0MzI1NWNkMzQyM2M=' -H 'fog-api-token: MzI2NDY1NjY2NjM0MzUzMDMzMzA2MzM1MzEzNzYyMzg2NTYyNjQ2MjMxMzczMTM0NjY2NDM0NjUzOTM2NjIzNDM4MzQ2NDM3MzY2MzM2MzMzNjYyMzUzODY0MzUzNDYyMzgzMDY2NjQzNTMxMzI2MzM5NjYzNjYzMzMzMzM0MzA=' http://10.0.0.28/fog/task/cancel -d '{"typeID": [1,2] }'
-
Set host IDs 1 2 and 3 to image ID 1 curl --silent -k -H 'Content-Type: application/json' -H 'fog-user-token: ZjBkMmE3YmI5NmUzZDcxYTliYzNkZTc4MmJhNTFiYTQ3Mzc2MTg5MzYxMThmNjA5NDYyMjllMTA5YzE0NWUxMjFiNzkyMTc5OTMwZjFhZGM5NWIxMTc3YWZmNTU2MmMwYjFhNjg0NjVmMTkyMGZkNDQxYmY0MzI1NWNkMzQyM2M=' -H 'fog-api-token: MzI2NDY1NjY2NjM0MzUzMDMzMzA2MzM1MzEzNzYyMzg2NTYyNjQ2MjMxMzczMTM0NjY2NDM0NjUzOTM2NjIzNDM4MzQ2NDM3MzY2MzM2MzMzNjYyMzUzODY0MzUzNDYyMzgzMDY2NjQzNTMxMzI2MzM5NjYzNjYzMzMzMzM0MzA=' http://10.0.0.28/fog/image/1/edit -X PUT -d '{"hosts": [1,2,3]}'
-
Get task status of host ID 1 curl --silent -X GET -H 'content-type: application/json' -H 'fog-user-token: ZjBkMmE3YmI5NmUzZDcxYTliYzNkZTc4MmJhNTFiYTQ3Mzc2MTg5MzYxMThmNjA5NDYyMjllMTA5YzE0NWUxMjFiNzkyMTc5OTMwZjFhZGM5NWIxMTc3YWZmNTU2MmMwYjFhNjg0NjVmMTkyMGZkNDQxYmY0MzI1NWNkMzQyM2M=' -H 'fog-api-token: MzI2NDY1NjY2NjM0MzUzMDMzMzA2MzM1MzEzNzYyMzg2NTYyNjQ2MjMxMzczMTM0NjY2NDM0NjUzOTM2NjIzNDM4MzQ2NDM3MzY2MzM2MzMzNjYyMzUzODY0MzUzNDYyMzgzMDY2NjQzNTMxMzI2MzM5NjYzNjYzMzMzMzM0MzA=' http://10.0.0.28/fog/task/active -d '{"hostID": [1]}'
-
Capture image from host id 1 curl --silent -k --header 'content-type: application/json' --header 'fog-user-token: ZjBkMmE3YmI5NmUzZDcxYTliYzNkZTc4MmJhNTFiYTQ3Mzc2MTg5MzYxMThmNjA5NDYyMjllMTA5YzE0NWUxMjFiNzkyMTc5OTMwZjFhZGM5NWIxMTc3YWZmNTU2MmMwYjFhNjg0NjVmMTkyMGZkNDQxYmY0MzI1NWNkMzQyM2M=' --header 'fog-api-token: MzI2NDY1NjY2NjM0MzUzMDMzMzA2MzM1MzEzNzYyMzg2NTYyNjQ2MjMxMzczMTM0NjY2NDM0NjUzOTM2NjIzNDM4MzQ2NDM3MzY2MzM2MzMzNjYyMzUzODY0MzUzNDYyMzgzMDY2NjQzNTMxMzI2MzM5NjYzNjYzMzMzMzM0MzA=' http://10.0.0.28/fog/host/1/task --data '{"taskTypeID":2,"shutdown": true}'
-
Cancel tasks for a single host of ID 1 curl --silent -X GET -H 'content-type: application/json' -H 'fog-user-token: ZjBkMmE3YmI5NmUzZDcxYTliYzNkZTc4MmJhNTFiYTQ3Mzc2MTg5MzYxMThmNjA5NDYyMjllMTA5YzE0NWUxMjFiNzkyMTc5OTMwZjFhZGM5NWIxMTc3YWZmNTU2MmMwYjFhNjg0NjVmMTkyMGZkNDQxYmY0MzI1NWNkMzQyM2M=' -H 'fog-api-token: MzI2NDY1NjY2NjM0MzUzMDMzMzA2MzM1MzEzNzYyMzg2NTYyNjQ2MjMxMzczMTM0NjY2NDM0NjUzOTM2NjIzNDM4MzQ2NDM3MzY2MzM2MzMzNjYyMzUzODY0MzUzNDYyMzgzMDY2NjQzNTMxMzI2MzM5NjYzNjYzMzMzMzM0MzA=' http://10.0.0.28/fog/task/cancel -d '{"hostID": [1]}'
-
Deploy an image to a single host with the name testhost1 curl --silent -k -H 'Content-Type: application/json' -H 'fog-user-token: ZjBkMmE3YmI5NmUzZDcxYTliYzNkZTc4MmJhNTFiYTQ3Mzc2MTg5MzYxMThmNjA5NDYyMjllMTA5YzE0NWUxMjFiNzkyMTc5OTMwZjFhZGM5NWIxMTc3YWZmNTU2MmMwYjFhNjg0NjVmMTkyMGZkNDQxYmY0MzI1NWNkMzQyM2M=' -H 'fog-api-token: MzI2NDY1NjY2NjM0MzUzMDMzMzA2MzM1MzEzNzYyMzg2NTYyNjQ2MjMxMzczMTM0NjY2NDM0NjUzOTM2NjIzNDM4MzQ2NDM3MzY2MzM2MzMzNjYyMzUzODY0MzUzNDYyMzgzMDY2NjQzNTMxMzI2MzM5NjYzNjYzMzMzMzM0MzA=' http://10.0.0.28/fog/host/testhost1/task -d '{"taskTypeID":1,"shutdown": true}'
-
@AndrewG78 We need volunteers to write some documentation. For the multicasting problem, it may not be implemented into the API yet - I’m not sure.
Here are my example commands I promised:
FOG Server IP in these examples is 10.0.0.28 and the keys you see in here are my test keys on my test server at home. I left them in there so everyone can have a valid example. 1 is the FOG ID of the host in FOG, testhost1 is the hostname.
#wiki worthy
Also pinging @Moderators and @Testers just so they get exposure.
-
HI,
Are there any news regarding API implementation?
I wanted to read changelog of RC versions, but keep getting 502 Bad Gateway.
Andrew -
@andrewg78 AFAIK no changes have been made to the API since 1.4.4 was released. The 1.5.0 branch has a few minor bug fixes, but was mainly focused on the new web gui.
-
@george1421 Thank you. I have 1.4.2 . Do you maybe know if there are some changes in API between my version and 1.4.4 ?
https://news.fogproject.org/fog-1-4-4-officially-released/ keeps popping out 502 error -
@andrewg78 There were some tweaks to the API between 1.4.2 and 1.4.4, but I can’t tell you off the top of my head. You would be better to move to 1.4.4 anyway outside of the API stuff. There were some issues with 1.4.2 that was address in 1.4.3 and finally in 1.4.4.
The developers are still on holiday, but let me see if I can ping one of them to kickstart the news server.
-
May u please validate my curl command?
I keep getting same error as I mentioned few months ago.
{
“error”: “Invalid tasking type passed”
}I’m trying to task multicast process.
curl --header “fog-api-token: <token>=” --header “fog-user-token: <token>=” --data ‘{“taskTypeID”:8}’ -X POST http://<IP>/fog/group/2/task
-
@Wayne-Workman any ideas since you have been working with the API more than most?
-
@andrewg78 The tokens should not have an “equals” symbol added. My examples have an equals at the end because that was coincidentally part of the token. So if you’re adding an equals, remove that.
And you’re missing this header:
-H 'Content-Type: application/json'