Chapter 6. API cheat sheet You can review the following examples of how to use the Red Hat Satellite API to perform various tasks. You can use the API on Satellite Server via HTTPS on port 443. For example, in Ruby, you can specify the Satellite Server URL as follows: You can use these values to fully automate your scripts, removing any need to verify which ports to use. The following examples use curl for sending API requests. For more information, see Section 5.1, "Calling the API in curl" . 6.1. Working with hosts Listing hosts This example returns a list of Satellite hosts. Example request: Example response: Requesting information for a host This request returns information for the host satellite.example.com . Example request: Example response: Listing host facts This request returns all facts for the host satellite.example.com . Example request: Example response: Searching for hosts with matching patterns This query returns all hosts that match the pattern "example". Example request: Example response: Searching for hosts in an environment This query returns all hosts in the production environment. Example request: Example response: Searching for hosts with a specific fact value This query returns all hosts with a model name RHV Hypervisor . Example request: Example response: Deleting a host This request deletes a host with a name host1.example.com . Example request: Downloading a full-host boot disk image This request downloads a full boot disk image for a host by its ID. Example request: 6.2. Working with lifecycle environments Satellite divides application life cycles into lifecycle environments, which represent each stage of the application life cycle. Lifecycle environments are linked to from an environment path. To create linked lifecycle environments with the API, use the prior_id parameter. You can find the built-in API reference for lifecycle environments at https:// satellite.example.com /apidoc/v2/lifecycle_environments.html . The API routes include /katello/api/environments and /katello/api/organizations/:organization_id/environments . Listing lifecycle environments Use this API call to list all the current lifecycle environments on your Satellite for the default organization with ID 1 . Example request: Example response: Creating linked lifecycle environments Use this example to create a path of lifecycle environments. This procedure uses the default Library environment with ID 1 as the starting point for creating lifecycle environments. Choose an existing lifecycle environment that you want to use as a starting point. List the environment by using its ID, in this case, the environment with ID 1 : Example request: Example response: Create a JSON file, for example, life-cycle.json , with the following content: Create a lifecycle environment by using the prior option set to 1 . Example request: Example response: In the command output, you can see the ID for this lifecycle environment is 2 , and the lifecycle environment before this one is 1 . Use the lifecycle environment with ID 2 to create a successor to this environment. Edit the previously created life-cycle.json file, updating the label , name , and prior values. Create a lifecycle environment, by using the prior option set to 2 . Example request: Example response: In the command output, you can see the ID for this lifecycle environment is 3 , and the lifecycle environment before this one is 2 . Updating a lifecycle environment You can update a lifecycle environment by using a PUT command. This example request updates a description of the lifecycle environment with ID 3 . Example request: Example response: Deleting a lifecycle environment You can delete a lifecycle environment provided it has no successor. Therefore, delete them in reverse order by using a command in the following format: Example request: 6.3. Uploading Content to Satellite Server You can use the Satellite API to upload and import large files to your Satellite Server. This process involves four steps: Create an upload request. Upload the content. Import the content. Delete the upload request. The maximum file size that you can upload is 2 MB. For information about uploading larger content, see Uploading content larger than 2 MB . Procedure Assign the package name to the variable name : Example request: Assign the checksum of the file to the variable checksum : Example request: Assign the file size to the variable size : Example request: Create an upload request that returns the upload ID of the request by using size and checksum . Example request: where 76, in this case, is an example Repository ID. Example request: Assign the upload ID to the variable upload_id : Assign the path of the package you want to upload to the variable path : Upload your content. Ensure you use the correct MIME type when you upload data. The API uses the application/json MIME type for the requests to Satellite unless stated otherwise. Combine the upload ID, MIME type, and other parameters to upload content. Example request: After you have uploaded the content to your Satellite Server, you need to import it into the appropriate repository. Until you complete this step, Satellite Server does not detect the new content. Example request: After you have successfully uploaded and imported your content, you can delete the upload request. This frees any temporary disk space that data is using during the upload. Example request: Uploading content larger than 2 MB The following example demonstrates how to split a large file into chunks, create an upload request, upload the individual files, import them to Satellite, and then delete the upload request. Note that this example uses sample content, host names, user names, repository ID, and file names. Assign the package name to the variable name : Assign the checksum of the file to the variable checksum : Assign the file size to the variable size : The following command creates a new upload request and returns the upload ID of the request by using size and checksum . Example request: where 76, in this case, is an example Repository ID. Example output Assign the upload ID to the variable upload_id : Split the file in 2MB chunks: Example output Assign the prefix of the split files to the variable path. Upload the file chunks. The offset starts at 0 bytes for the first chunk and increases by 2000000 bytes for each file. Note the use of the offset parameter and how it relates to the file size. Note also that the indexes are used after the path variable, for example, USD{path}0, USD{path}1. Example requests: Import the complete upload to the repository: Delete the upload request: Uploading duplicate content Note that if you try to upload duplicate content using: Example request: The call will return a content unit ID instead of an upload ID, similar to this: You can copy this output and call import uploads directly to add the content to a repository: Example request: Note that the call changes from using upload_id to using content_unit_id . 6.4. Applying errata to hosts You can use the API to apply errata to a host, host group, or host collection. The following is the basic syntax of a PUT request: You can browse the built-in API doc to find a URL to use for applying errata. You can use the Satellite web UI to help discover the format for the search query. Navigate to Hosts > Host Collections and select a host collection. Go to Collection Actions > Errata Installation and notice the search query box contents. For example, for a Host Collection called my-collection , the search box contains host_collection="my-collection" . Applying errata to a host This example uses the API URL for bulk actions /katello/api/hosts/bulk/install_content to show the format required for a simple search. Example request: Applying errata to a host collection In this example, notice the level of escaping required to pass the search string host_collection="my-collection" as seen in the Satellite web UI. Example request: 6.5. Using extended searches You can find search parameters that you can use to build your search queries in the Satellite web UI. For more information, see Building search queries in Administering Red Hat Satellite . For example, you can search for hosts. Procedure In the Satellite web UI, navigate to Hosts > All Hosts and click the Search field to display a list of search parameters. Locate the search parameters that you want to use. For this example, locate os_title and model . Combine the search parameters in your API query as follows: Example request: Example response: 6.6. Using searches with pagination control You can use the per_page and page pagination parameters to limit the search results that an API search query returns. The per_page parameter specifies the number of results per page and the page parameter specifies which page, as calculated by the per_page parameter, to return. The default number of items to return is set to 1000 when you do not specify any pagination parameters, but the per_page value has a default of 20 which applies when you specify the page parameter. Listing content views This example returns a list of Content Views in pages. The list contains 10 keys per page and returns the third page. Example request: Listing activation keys This example returns a list of activation keys for an organization with ID 1 in pages. The list contains 30 keys per page and returns the second page. Example request: Returning multiple pages You can use a for loop structure to get multiple pages of results. This example returns pages 1 to 3 of Content Views with 5 results per page: 6.7. Overriding Smart Class parameters You can search for Smart Parameters by using the API and supply a value to override a Smart Parameter in a Class. You can find the full list of attributes that you can modify in the built-in API reference at https:// satellite.example.com /apidoc/v2/smart_class_parameters/update.html . Procedure Find the ID of the Smart Class parameter you want to change: List all Smart Class Parameters. Example request: If you know the Puppet class ID, for example 5, you can restrict the scope: Example request: Both calls accept a search parameter. You can view the full list of searchable fields in the Satellite web UI. Navigate to Configure > Smart variables and click in the search query box to reveal the list of fields. Two particularly useful search parameters are puppetclass_name and key , which you can use to search for a specific parameter. For example, use the --data option to pass URL encoded data. Example request: Satellite supports standard scoped-search syntax. When you find the ID of the parameter, list the full details including current override values. Example request: Enable overriding of parameter values. Example request: Note that you cannot create or delete the parameters manually. You can only modify their attributes. Satellite creates and deletes parameters only upon class import from Capsules. Add custom override matchers. Example request: For more information about override values, see https:// satellite.example.com /apidoc/v2/override_values.html . You can delete override values. Example request: 6.8. Modifying a Smart Class parameter by using an external file You can modify a Puppet Smart Class parameter by using an external file. Using external files simplifies working with JSON data. You can use an editor with syntax highlighting to avoid and locate mistakes. Modifying a Smart Class parameter by using an external file This example uses a MOTD Puppet manifest. Search for the Puppet Class by name, motd in this case. Example request: Examine the following output. Each Smart Class Parameter has an ID that is global for the same Satellite instance. The content parameter of the motd class has id=3 . Do not confuse this with the Puppet Class ID that displays before the Puppet Class name. Example response: Use the parameter ID 3 to get the information specific to the motd parameter and redirect the output to a file, for example, output_file.json . Example request: Copy the file created in the step to a new file for editing, for example, changed_file.json : Modify the required values in the file. In this example, change the content parameter of the motd module, which requires changing the override option from false to true : After editing the file, verify that it looks as follows and then save the changes: Submit the file to Satellite: 6.9. Deleting OpenSCAP reports In Satellite Server, you can delete one or more OpenSCAP reports. However, when you delete reports, you must delete one page at a time. If you want to delete all OpenSCAP reports, use the bash script that follows. Procedure List all OpenSCAP reports. Note the IDs of the reports that you want to delete. Example request: Example response: Using an ID from the step, delete the OpenSCAP report. Repeat for each ID that you want to delete. Example request: Example response: Example BASH script to delete all OpenSCAP reports Use the following bash script to delete all the OpenSCAP reports: #!/bin/bash #this script removes all the ARF reports from your Satellite Server #settings USER= username PASS= password URI=https:// satellite.example.com #check amount of reports while [ USD(curl --user USDUSER:USDPASS USDURI/api/v2/compliance/arf_reports/ | python3 -m json.tool | grep \"\total\": | cut --fields=2 --delimiter":" | cut --fields=1 --delimiter"," | sed "s/ //g") -gt 0 ]; do #fetch reports for i in USD(curl --user USDUSER:USDPASS USDURI/api/v2/compliance/arf_reports/ | python3 -m json.tool | grep \"\id\": | cut --fields=2 --delimiter":" | cut --fields=1 --delimiter"," | sed "s/ //g") #delete reports do curl --user USDUSER:USDPASS --header "Content-Type: application/json" --request DELETE USDURI/api/v2/compliance/arf_reports/USDi done done

Commands:
url = 'https:// satellite.example.com /api/v2/' katello_url = 'https:// satellite.example.com /katello/api/v2/'
curl --request GET --user My_User_Name : My_Password https:// satellite.example.com /api/v2/hosts | python3 -m json.tool
{ "total" => 2, "subtotal" => 2, "page" => 1, "per_page" => 1000, "search" => nil, "sort" => { "by" => nil, "order" => nil }, "results" => [ }
curl --request GET --user My_User_Name : My_Password https:// satellite.example.com /api/v2/hosts/ satellite.example.com | python3 -m json.tool
{ "all_puppetclasses": [], "architecture_id": 1, "architecture_name": "x86_64", "build": false, "capabilities": [ "build" ], "certname": " satellite.example.com ", "comment": null, "compute_profile_id": null, }
curl --request GET --user My_User_Name : My_Password https:// satellite.example.com /api/v2/hosts/ satellite.example.com /facts | python3 -m json.tool
{ "results": { " satellite.example.com ": { "augeasversion": "1.0.0", "bios_release_date": "01/01/2007", "bios_version": "0.5.1", "blockdevice_sr0_size": "1073741312", "facterversion": "1.7.6", }
curl --request GET --user My_User_Name : My_Password https:// satellite.example.com /api/v2/hosts?search=example | python3 -m json.tool
{ "results": [ { "name": " satellite.example.com ", } ], "search": "example", }
curl --request GET --user My_User_Name : My_Password https:// satellite.example.com /api/v2/hosts?search=environment=production | python3 -m json.tool
{ "results": [ { "environment_name": "production", "name": " satellite.example.com ", } ], "search": "environment=production", }
curl --request GET --user My_User_Name : My_Password https:// satellite.example.com /api/v2/hosts?search=model=\"RHV+Hypervisor\" | python3 -m json.tool
{ "results": [ { "model_id": 1, "model_name": "RHV Hypervisor", "name": " satellite.example.com ", } ], "search": "model=\"RHV Hypervisor\"", }
curl --request DELETE --user My_User_Name : My_Password https:// satellite.example.com /api/v2/hosts/ host1.example.com | python3 -m json.tool
curl --request GET --user My_User_Name : My_Password https:// satellite.example.com /api/bootdisk/hosts/ host_ID ?full=true --output image .iso
curl --header "Accept:application/json" --header "Content-Type:application/json" --request GET --user My_User_Name : My_Password https:// satellite.example.com /katello/api/organizations/1/environments | python3 -m json.tool`
output omitted "description": null, "id": 1, "label": "Library", "library": true, "name": "Library", "organization": { "id": 1, "label": "Default_Organization", "name": "Default Organization" }, "permissions": { "destroy_lifecycle_environments": false, "edit_lifecycle_environments": true, "promote_or_remove_content_views_to_environments": true, "view_lifecycle_environments": true }, "prior": null, "successor": null, output truncated
curl --request GET --user My_User_Name : My_Password https:// satellite.example.com /katello/api/environments/1 | python3 -m json.tool
output omitted "id": 1, "label": "Library", output omitted "prior": null, "successor": null, output truncated
organization_id: 1
label: api-dev
name: API Development
prior: 1
curl --header "Accept:application/json" --header "Content-Type:application/json" --request POST --user My_User_Name : My_Password --data @life-cycle.json https:// satellite.example.com /katello/api/environments | python3 -m json.tool
output omitted "description": null, "id": 2, "label": "api-dev", "library": false, "name": "API Development", "organization": { "id": 1, "label": "Default_Organization", "name": "Default Organization" }, "permissions": { "destroy_lifecycle_environments": true, "edit_lifecycle_environments": true, "promote_or_remove_content_views_to_environments": true, "view_lifecycle_environments": true }, "prior": { "id": 1, "name": "Library" }, output truncated
organization_id: 1
label: api-qa
name: API QA
prior: 2
curl --header "Accept:application/json" --header "Content-Type:application/json" --request POST --user My_User_Name : My_Password --data @life-cycle.json https:// satellite.example.com /katello/api/environments | python3 -m json.tool
output omitted "description": null, "id": 3, "label": "api-qa", "library": false, "name": "API QA", "organization": { "id": 1, "label": "Default_Organization", "name": "Default Organization" }, "permissions": { "destroy_lifecycle_environments": true, "edit_lifecycle_environments": true, "promote_or_remove_content_views_to_environments": true, "view_lifecycle_environments": true }, "prior": { "id": 2, "name": "API Development" }, "successor": null, output truncated
curl --header "Accept:application/json" --header "Content-Type:application/json" --request POST --user My_User_Name : My_Password --data '{"description":"Quality Acceptance Testing"}' https:// satellite.example.com /katello/api/environments/3 | python3 -m json.tool
output omitted "description": "Quality Acceptance Testing", "id": 3, "label": "api-qa", "library": false, "name": "API QA", "organization": { "id": 1, "label": "Default_Organization", "name": "Default Organization" }, "permissions": { "destroy_lifecycle_environments": true, "edit_lifecycle_environments": true, "promote_or_remove_content_views_to_environments": true, "view_lifecycle_environments": true }, "prior": { "id": 2, "name": "API Development" }, output truncated
curl --request DELETE --user My_User_Name : My_Password https:// satellite.example.com /katello/api/environments/ :id
export name=jq-1.6-2.el7.x86_64.rpm
export checksum=USD(sha256sum USDname|cut -c 1-65)
export size=USD(du -bs USDname|cut -f 1)
curl -H 'Content-Type: application/json' -X POST -k -u My_User_Name : My_Password -d "{\"size\": \"USDsize\", \"checksum\":\"USDchecksum\"}" https:// satellite.example.com /katello/api/v2/repositories/76/content_uploads
upload_id: 37eb5900-597e-4ac3-9bc5-2250c302fdc4
export upload_id=37eb5900-597e-4ac3-9bc5-2250c302fdc4
export path=/root/jq/jq-1.6-2.el7.x86_64.rpm
curl -u My_User_Name : My_Password -H Accept:application/json -H Content-Type:multipart/form-data --request PUT --data-urlencode size=USDsize --data-urlencode offset=0 --data-urlencode content@USD{path} https:// satellite.example.com /katello/api/v2/repositories/76/content_uploads/USDupload_id
curl -H "Content-Type:application/json" -X PUT -u My_User_Name : My_Password -k -d "{\"uploads\":[{\"id\": \"USDupload_id\", \"name\": \"USDname\", \"checksum\": \"USDchecksum\" }]}" https:// satellite.example.com /katello/api/v2/repositories/76/import_uploads
curl -H 'Content-Type: application/json' -X DELETE -k -u My_User_Name : My_Password -d "{}" https:// satellite.example.com /katello/api/v2/repositories/76/content_uploads/USDupload_id
export name=bpftool-3.10.0-1160.2.1.el7.centos.plus.x86_64.rpm
export checksum=USD(sha256sum USDname|cut -c 1-65)
export size=USD(du -bs USDname|cut -f 1)
curl -H 'Content-Type: application/json' -X POST -k -u My_User_Name : My_Password -d "{\"size\": \"USDsize\", \"checksum\":\"USDchecksum\"}" https:// satellite.example.com /katello/api/v2/repositories/76/content_uploads
upload_id: 37eb5900-597e-4ac3-9bc5-2250c302fdc4
export upload_id=37eb5900-597e-4ac3-9bc5-2250c302fdc4
split --bytes 2MB --numeric-suffixes --suffix-length=1 bpftool-3.10.0-1160.2.1.el7.centos.plus.x86_64.rpm bpftool
ls bpftool[0-9] -l -rw-r--r--. 1 root root 2000000 Mar 31 14:15 bpftool0 -rw-r--r--. 1 root root 2000000 Mar 31 14:15 bpftool1 -rw-r--r--. 1 root root 2000000 Mar 31 14:15 bpftool2 -rw-r--r--. 1 root root 2000000 Mar 31 14:15 bpftool3 -rw-r--r--. 1 root root 868648 Mar 31 14:15 bpftool4
export path=/root/tmp/bpftool
curl -u My_User_Name : My_Password -H Accept:application/json -H Content-Type:multipart/form-data -X PUT --data-urlencode size=USDsize --data-urlencode offset=0 --data-urlencode content@USD{path}0 https:// satellite.example.com /katello/api/v2/repositories/76/content_uploads/USDupload_id curl -u My_User_Name : My_Password -H Accept:application/json -H Content-Type:multipart/form-data -X PUT --data-urlencode size=USDsize --data-urlencode offset=2000000 --data-urlencode content@USD{path}1 https:// satellite.example.com /katello/api/v2/repositories/76/content_uploads/USDupload_id curl -u My_User_Name : My_Password -H Accept:application/json -H Content-Type:multipart/form-data -X PUT --data-urlencode size=USDsize --data-urlencode offset=4000000 --data-urlencode content@USD{path}2 https:// satellite.example.com /katello/api/v2/repositories/76/content_uploads/USDupload_id USDcurl -u My_User_Name : My_Password -H Accept:application/json -H Content-Type:multipart/form-data -X PUT --data-urlencode size=USDsize --data-urlencode offset=6000000 --data-urlencode content@USD{path}3 https:// satellite.example.com /katello/api/v2/repositories/76/content_uploads/USDupload_id curl -u My_User_Name : My_Password -H Accept:application/json -H Content-Type:multipart/form-data -X PUT --data-urlencode size=USDsize --data-urlencode offset=8000000 --data-urlencode content@USD{path}4 https:// satellite.example.com /katello/api/v2/repositories/76/content_uploads/USDupload_id
curl -H "Content-Type:application/json" -X PUT -u My_User_Name : My_Password -k -d "{\"uploads\":[{\"id\": \"USDupload_id\", \"name\": \"USDname\", \"checksum\": \"USDchecksum\" }]}" https:// satellite.example.com /katello/api/v2/repositories/76/import_uploads
curl -H 'Content-Type: application/json' -X DELETE -k -u My_User_Name : My_Password -d "{}" https:// satellite.example.com /katello/api/v2/repositories/76/content_uploads/USDupload_id
curl -H 'Content-Type: application/json' -X POST -k -u My_User_Name : My_Password -d "{\"size\": \"USDsize\", \"checksum\":\"USDchecksum\"}" https:// satellite.example.com /katello/api/v2/repositories/76/content_uploads
content_unit_href: /pulp/api/v3/content/file/files/c1bcdfb8-d840-4604-845e-86e82454c747/
curl -H "Content-Type:application/json" -X PUT -u My_User_Name : My_Password -k \-d "{\"uploads\":[{\"content_unit_id\": \"/pulp/api/v3/content/file/files/c1bcdfb8-d840-4604-845e-86e82454c747/\", \"name\": \"USDname\", \ \"checksum\": \"USDchecksum\" }]}" https:// satellite.example.com /katello/api/v2/repositories/76/import_uploads
curl --header "Accept:application/json" --header "Content-Type:application/json" --request PUT --user My_User_Name : My_Password --data My_JSON_Formatted_Data https:// satellite.example.com
curl --header "Accept:application/json" --header "Content-Type:application/json" --request PUT --user My_User_Name : My_Password --data "{\"organization_id\":1,\"included\":{\"search\":\" my-host \"},\"content_type\":\"errata\",\"content\":[\" RHBA-2016:1981 \"]}" https:// satellite.example.com /api/v2/hosts/bulk/install_content
curl --header "Accept:application/json" --header "Content-Type:application/json" --request PUT --user My_User_Name : My_Password --data "{\"organization_id\":1,\"included\":{\"search\":\"host_collection=\\\" my-collection \\\"\"},\"content_type\":\"errata\",\"content\":[\" RHBA-2016:1981 \"]}" https:// satellite.example.com /api/v2/hosts/bulk/install_content
curl --user My_User_Name : My_Password https:// satellite.example.com /api/v2/hosts?search=os_title=\"RedHat+7.7\",model=\"PowerEdge+R330\" | python3 -m json.tool
{ "results": [ { "model_id": 1, "model_name": "PowerEdge R330", "name": " satellite.example.com ", "operatingsystem_id": 1, "operatingsystem_name": "RedHat 7.7", } ], "search": "os_title=\"RedHat 7.7\",model=\"PowerEdge R330\"", "subtotal": 1, "total": 11 }
curl --request GET --user My_User_Name : My_Password https://satellite.example.com/katello/api/content_views?per_page=10&amp;page=3
curl --request GET --user My_User_Name : My_Password https://satellite.example.com/katello/api/activation_keys?organization_id=1&amp;per_page=30&amp;page=2
for i in seq 1 3 ; do curl --request GET --user My_User_Name : My_Password https://satellite.example.com/katello/api/content_views?per_page=5&amp;page=USDi; done
curl --request GET --user My_User_Name : My_Password https:// satellite.example.com /api/smart_class_parameters
curl --request GET --user My_User_Name : My_Password https:// satellite.example.com /api/puppetclasses/5/smart_class_parameters
curl --request GET --user My_User_Name : My_Password --data 'search=puppetclass_name = access_insights_client and key = authmethod' https:// satellite.example.com /api/smart_class_parameters
curl --request GET --user My_User_Name : My_Password https:// satellite.example.com /api/smart_class_parameters/ 63
curl --header "Accept:application/json" --header "Content-Type:application/json" --request PUT --user My_User_Name : My_Password --data '{"smart_class_parameter":{"override":true}}' https:// satellite.example.com /api/smart_class_parameters/63
curl --header "Accept:application/json" --header "Content-Type:application/json" --request PUT --user My_User_Name : My_Password --data '{"smart_class_parameter":{"override_value":{"match":"hostgroup=Test","value":"2.4.6"}}}' https:// satellite.example.com /api/smart_class_parameters/63
curl --request DELETE --user My_User_Name : My_Password https:// satellite.example.com /api/smart_class_parameters/63/override_values/3
curl --header "Accept:application/json" --header "Content-Type:application/json" --request GET --user My_User_Name : My_Password https:// satellite.example.com /api/smart_class_parameters?search=puppetclass_name=motd | python3 -m json.tool
{ "avoid_duplicates": false, "created_at": "2017-02-06 12:37:48 UTC", # Remove this line. "default_value": "", # Add a new value here. "description": "", "hidden_value": "", "hidden_value?": false, "id": 3, "merge_default": false, "merge_overrides": false, "override": false, # Set the override value to true . "override_value_order": "fqdn\nhostgroup\nos\ndomain", "override_values": [], # Remove this line. "override_values_count": 0, "parameter": "content", "parameter_type": "string", "puppetclass_id": 3, "puppetclass_name": "motd", "required": false, "updated_at": "2017-02-07 11:56:55 UTC", # Remove this line. "use_puppet_default": false, "validator_rule": null, "validator_type": "" }
curl --header "Accept:application/json" --header "Content-Type:application/json" --request GET --user My_User_Name : My_Password https:// satellite.example.com /api/smart_class_parameters/3 | python3 -m json.tool > output_file.json
cp output_file.json changed_file.json
{ "avoid_duplicates": false, "created_at": "2017-02-06 12:37:48 UTC", # Remove this line. "default_value": "", # Add a new value here. "description": "", "hidden_value": "", "hidden_value?": false, "id": 3, "merge_default": false, "merge_overrides": false, "override": false, # Set the override value to true . "override_value_order": "fqdn\nhostgroup\nos\ndomain", "override_values": [], # Remove this line. "override_values_count": 0, "parameter": "content", "parameter_type": "string", "puppetclass_id": 3, "puppetclass_name": "motd", "required": false, "updated_at": "2017-02-07 11:56:55 UTC", # Remove this line. "use_puppet_default": false, "validator_rule": null, "validator_type": "" }
{ "avoid_duplicates": false, "default_value": " No Unauthorized Access Allowed ", "description": "", "hidden_value": "", "hidden_value?": false, "id": 3, "merge_default": false, "merge_overrides": false, "override": true, "override_value_order": "fqdn\nhostgroup\nos\ndomain", "override_values_count": 0, "parameter": "content", "parameter_type": "string", "puppetclass_id": 3, "puppetclass_name": "motd", "required": false, "use_puppet_default": false, "validator_rule": null, "validator_type": "" }
curl --header "Accept:application/json" --header "Content-Type:application/json" --request PUT --user My_User_Name : My_Password --data @changed_file.json https:// satellite.example.com /api/smart_class_parameters/3
curl --user My_User_Name : My_Password https:// satellite.example.com /api/v2/compliance/arf_reports/ | python3 -m json.tool
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 3252 0 3252 0 0 4319 0 --:--:-- --:--:-- --:--:-- 4318 { "page": 1, "per_page": 20, "results": [ { "created_at": "2017-05-16 13:27:09 UTC", "failed": 0, "host": " host1.example.com ", "id": 404, "othered": 0, "passed": 0, "updated_at": "2017-05-16 13:27:09 UTC" }, { "created_at": "2017-05-16 13:26:07 UTC", "failed": 0, "host": " host2.example.com , "id": 405, "othered": 0, "passed": 0, "updated_at": "2017-05-16 13:26:07 UTC" }, { "created_at": "2017-05-16 13:25:07 UTC", "failed": 0, "host": " host3.example.com ", "id": 406, "othered": 0, "passed": 0, "updated_at": "2017-05-16 13:25:07 UTC" }, { "created_at": "2017-05-16 13:24:07 UTC", "failed": 0, "host": " host4.example.com ", "id": 407, "othered": 0, "passed": 0, "updated_at": "2017-05-16 13:24:07 UTC" }, ], "search": null, "sort": { "by": null, "order": null }, "subtotal": 29, "total": 29
curl --user My_User_Name : My_Password --header "Content-Type: application/json" --request DELETE https:// satellite.example.com /api/v2/compliance/arf_reports/405
HTTP/1.1 200 OK Date: Thu, 18 May 2017 07:14:36 GMT Server: Apache/2.4.6 (Red Hat Enterprise Linux) X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=block X-Content-Type-Options: nosniff Foreman_version: 1.11.0.76 Foreman_api_version: 2 Apipie-Checksum: 2d39dc59aed19120d2359f7515e10d76 Cache-Control: max-age=0, private, must-revalidate X-Request-Id: f47eb877-35c7-41fe-b866-34274b56c506 X-Runtime: 0.661831 X-Powered-By: Phusion Passenger 4.0.18 Set-Cookie: request_method=DELETE; path=/ Set-Cookie: _session_id=d58fe2649e6788b87f46eabf8a461edd; path=/; secure; HttpOnly ETag: "2574955fc0afc47cb5394ce95553f428" Status: 200 OK Vary: Accept-Encoding Transfer-Encoding: chunked Content-Type: application/json; charset=utf-8
#!/bin/bash #this script removes all the ARF reports from your Satellite Server #settings USER= username PASS= password URI=https:// satellite.example.com #check amount of reports while [ USD(curl --user USDUSER:USDPASS USDURI/api/v2/compliance/arf_reports/ | python3 -m json.tool | grep \"\total\": | cut --fields=2 --delimiter":" | cut --fields=1 --delimiter"," | sed "s/ //g") -gt 0 ]; do #fetch reports for i in USD(curl --user USDUSER:USDPASS USDURI/api/v2/compliance/arf_reports/ | python3 -m json.tool | grep \"\id\": | cut --fields=2 --delimiter":" | cut --fields=1 --delimiter"," | sed "s/ //g") #delete reports do curl --user USDUSER:USDPASS --header "Content-Type: application/json" --request DELETE USDURI/api/v2/compliance/arf_reports/USDi done done