Can I use some kind of script to create image and ghost my lab machines



  • Server
    • FOG Version: Latest
    • OS: Centos7
    Client
    • Service Version: What is this?
    • OS: Windows 10
    Description

    I’m using trying to use fog for test automation with Jenkins

    1. So I need a way to ghost machines using a Jenkins job (using some script such as python, bash or batch script).
    2. Secondly I need to create a new image of the current host by running some script in the host. (first I install my product, create image and ghost other machines to reduce the installation failures).

    Someone achieve point 1 and 2, appreciate you assist
    Thank you!


  • Moderator

    @andrewg78 Maybe you install Insomnia and work-through the request there first?



  • @Tom-Elliott
    Actually I tried your suggestion and have some issue.
    curl -vvv --header “Content-Type: application/json” --header “fog-api-token: <my_token>” --header “fog-user-token:<my_token>” -X POST --data ‘{“taskTypeID”: 8}’ http://<IP>/fog/group/3/task

    • upload completely sent off: 13 out of 13 bytes
      < HTTP/1.1 501 Not Implemented
      < Date: Thu, 14 Sep 2017 07:59:06 GMT
      < Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.1e-fips PHP/5.6.31
      < X-Powered-By: PHP/5.6.31
      < X-Frame-Options: sameorigin
      < X-XSS-Protection: 1; mode=block
      < X-Content-Type-Options: nosniff
      < Strict-Transport-Security: max-age=31536000
      < Content-Security-Policy: default-src ‘none’;script-src ‘self’ ‘unsafe-eval’;co
      nnect-src ‘self’;img-src ‘self’ data:;style-src ‘self’ ‘unsafe-inline’;font-src
      ’self’;
      < Access-Control-Allow-Origin: *
      < Content-Length: 42
      < Connection: close
      < Content-Type: application/json
      <
      { “error”: “Invalid tasking type passed”
      }* Closing connection 0

    but GET method works perfectly
    curl --header “Content-Type: application/json” --header “fog-api-token: <my_token>” --header “fog-user-token: <my_token>” --data ‘{“hostID”:13}’ -X GET http://<IP>/fog/task/active

    • upload completely sent off: 13 out of 13 bytes
      < HTTP/1.1 200 OK
      < Date: Thu, 14 Sep 2017 08:02:15 GMT
      < Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.1e-fips PHP/5.6.31
      < X-Powered-By: PHP/5.6.31
      < X-Frame-Options: sameorigin
      < X-XSS-Protection: 1; mode=block
      < X-Content-Type-Options: nosniff
      < Strict-Transport-Security: max-age=31536000
      < Content-Security-Policy: default-src ‘none’;script-src ‘self’ ‘unsafe-eval’;co
      nnect-src ‘self’;img-src ‘self’ data:;style-src ‘self’ ‘unsafe-inline’;font-src
      ’self’;
      < Access-Control-Allow-Origin: *
      < Content-Length: 27
      < Connection: close
      < Content-Type: application/json
      <
      { “count”: 0, “tasks”: []
      }* Closing connection 0

  • Senior Developer

    @andrewg78 Why don’t you try what I suggested?

    curl -vvv -H 'Content-Type: application/json' -H 'fog-api-token: <my_token>' -H 'fog-user-token: <my_token>' http://<IP>/fog/group/3/task -X POST --data '{"taskTypeID": 8}'



  • I have three groups. I wanted to process group ID==3

    curl -vvv --header “Content-Type: application/json” --header “fog-api-token: <my_token>” --header “fog-user-token:<my_token>” -X POST http://<IP>/fog/group/3/multicastsession

    < HTTP/1.1 501 Not Implemented
    < Date: Tue, 12 Sep 2017 11:25:28 GMT
    < Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.1e-fips PHP/5.6.31
    < X-Powered-By: PHP/5.6.31
    < X-Frame-Options: sameorigin
    < X-XSS-Protection: 1; mode=block
    < X-Content-Type-Options: nosniff
    < Strict-Transport-Security: max-age=31536000
    < Content-Security-Policy: default-src ‘none’;script-src ‘self’ ‘unsafe-eval’;co
    nnect-src ‘self’;img-src ‘self’ data:;style-src ‘self’ ‘unsafe-inline’;font-src
    ’self’;
    < Access-Control-Allow-Origin: *
    < Content-Length: 0
    < Connection: close
    < Content-Type: application/json
    <

    • Closing connection 0

  • Senior Developer

    @andrewg78 I don’t think you need the --data '{"taskTypeID": 8}' though it shouldn’t really matter. Is there any return output from the command losing teh --silent component should show you what’s going on more directly.

    Something like:

    curl -vvv -H 'Content-Type: application/json' -H 'fog-api-token: <my_token>' -H 'fog-user-token: <my_token>' http://<IP>/fog/group/3/task -X POST --data '{"taskTypeID": 8}'


  • Moderator

    @andrewg78 Yes, please check the apache error logs. The command I posted did work on my home fog server.


  • Developer

    @AndrewG78 Anything you see in the apache error logs when running the curl command?



  • @Wayne-Workman
    Thx, I’ve tried this, and there is no any action :(
    I have no error but task is not being created.
    curl --header “Content-Type: application/json” --header “fog-api-token: <my_token>” --header “fog-user-token: <my_token>” --data ‘{“taskTypeID”:8}’ -X POST http://<IP>/fog/group/3/multicastsession


  • Moderator

    @andrewg78 The API supports multicast. The documentation here shows us how: https://news.fogproject.org/simplified-api-documentation/

    You must specify multicastsession as the task type. This is how:

    curl --silent -k -H 'Content-Type: application/json' -H 'fog-user-token: NTcwZTkwYzA5ZDE5NGI0ZTQ3NDgzYzE5ZmM5YWZiZjU5YmZjNjcxMzhiODNlMDczNTlhMWNiNjIxNDVlYmM4ZmZjMGVlOTFiNmUzNzFkNjY5ZmFjNzViMjRiNmJiNWNlM2JiYTM3ZDIxNzk3N2Y3YmM5N2JkM2U4ODZhODdmZjk=' -H 'fog-api-token: M2JhM2ViZmJhZDM1MmQ1MTU4NTNjMTNmZjY4YTY3MGUxMTZmNzgyMmQxYzlhOWMwMmRjMTg0NWNmYTE4MmZiY2FkNjFjYzY1ZjY5NGQ4ZTE1Yjk4ZTg5NTQ0YTBiYmIwYzFjYmFiNTFiYzkwZTQ0YzI5MzFlNWM0NzhmMzEyNTk=' http://10.0.0.28/fog/group/1/multicastsession
    


  • @Wayne-Workman Hi, thx but " " are needed. I think they depends on the curl version(I’m on WIndows). Without “equals” I got “can not resolve host” error. Moreover, my command gets proper response from the server that tasking type is invalid. I assume API does not support multicast yet. Please confirm that. If you have something not committed to repo yet, please do commit it, as I can test it. Doing CI integration through Jenkins now


  • Moderator

    @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'


  • Moderator

    @Wayne-Workman any ideas since you have been working with the API more than most?



  • 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


  • Moderator

    @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.



  • @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


  • Moderator

    @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.



  • HI,
    Are there any news regarding API implementation?
    I wanted to read changelog of RC versions, but keep getting 502 Bad Gateway.
    Andrew


  • Moderator

    @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.


  • Moderator

    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}'
    

Log in to reply
 

776
Online

39.3k
Users

11.0k
Topics

104.6k
Posts

Looks like your connection to FOG Project was lost, please wait while we try to reconnect.