Running Daily Maintenance While Skipping the Scheduled Daily Maintenance

While running the daily maintenance you can choose to skip the scheduled daily maintenance. This API is version v1.

Before using the REST resources, you must understand how to access the REST resources and other important concepts. See About the REST APIs. Using these REST APIs requires prerequisites. See Prerequisites.

REST Resource

POST /interop/rest/{api_version}/services/maintenancewindow

Parameters:

The following table summarizes the request parameters.

Table 10-6 Parameters

Name Description Type Required Default
api_version Specific API version Path Yes None
skipNext Specifies if the set maintenance time should be used, true or false String Yes false

Response

Supported Media Types: application/json

Table 10-7 Parameters

Parameters Description
details In case of errors, details are published with the error string
status See Migration Status Codes
links Detailed information about the link
href Links to API call
action The HTTP call type
rel Possible value: self
data Parameters as key value pairs passed in the request
  • Java Code using skipNext:

    DailyMaintenanceWithSkipNextv1.java Main method: runDailyMaintenanceWithSkipNext() Helper method waitForCompletion

  • Curl Code using skipNext:

    Main method: funcSetMaintenancewithSkipNext

  • Groovy Code using skipNext:

    DailyMaintenanceWithSkipNextv1.groovy Main method: runDailyMaintenanceWithSkipNext()

Maintenance Window Time Sample Code

Example 10-7 Java Sample – SetMaintenanceDetails.java

Prerequisites: json.jar

Common Functions: See Common Helper Functions for Java


public class DailyMaintenanceWithSkipNextv1 {
	private String userName ; // PBCS user name
	private String password ; // PBCS user password
	private String serverUrl ; // PBCS server  URL
	private String lcmVersion = "v1"; // Version of the PBCS API that you are
	

	public void runDailyMaintenanceWithSkipNext(String comment) throws Exception {
		Scanner in = null;
		try {
			
			String skipNext = "false";
			JSONObject params = new JSONObject();
            
			
			/*Parameter to Skip the next scheduled maintenance report to be run . 
			It is either true or false
			If true the scheduled daily maintenance is run
			If false the scheduled daily maintenance is skipped*/
					
			params.put("skipNext", skipNext);
			
			String urlString = String.format(
					"%s/interop/rest/%s/services/maintenancewindow", serverUrl,
					lcmVersion);
			String response = executeRequest(urlString, "POST",
					params.toString(), "application/json");
			waitForCompletion(fetchPingUrlFromResponse(response, "Job Status"),"GET");
		} catch (Exception e) {

		} finally {
			in.close();
		}
	}

	
	
	private void waitForCompletion(String pingUrlString, String methodType)
			throws Exception {
		boolean completed = false;
		while (!completed) {
			try {
				String pingResponse = executeRequest(pingUrlString, methodType,
						null, "application/x-www-form-urlencoded");
				JSONObject json = new JSONObject(pingResponse);
				int status = json.getInt("status");
				if (status == -1) {
					try {
						System.out.println("Please wait...");
						Thread.sleep(20000);
					} catch (InterruptedException e) {
						completed = true;
						throw e;
					}
				} else {
					if (status > 0) {
						System.out.println("Error occurred: "
								+ json.getString("details"));
					} else {
						System.out.println("Completed");
					}
					completed = true;
				}
			} catch (Exception e) {
				System.out.println(e.getMessage());
				// services are down, waiting to come up
				Thread.sleep(60000);
			}
		}
	}
	
}

Example 10-8 cURL Sample – SetMaintenanceDetails.sh

Prerequisites: jq (http://stedolan.github.io/jq/download/linux64/jq)

Common Functions: See Common Helper Functions for cURL

#!/bin/sh
SERVER_URL=""
USERNAME=""
PASSWORD=""
API_VERSION=""
DOMAIN=""


funcSetMaintenancewithSkipNext () {
        url=$SERVER_URL/interop/rest/v1/services/maintenancewindow

        skipNext="false"

        param="{\"skipNext\":\"$skipNext\"}"
        funcExecuteRequest "POST" $url $param "application/json"

        output=`cat response.txt`
        status=`echo $output | jq '.status'`
        if [ $status == -1 ]; then
          echo "Started Daily Maintainence succesfully"
                funcGetStatus "GET"
        else
        error=`echo $output | jq '.details'`
        echo "Error occurred. " $error
        fi
        funcRemoveTempFiles "respHeader.txt" "response.txt"


}

Example 10-9 Groovy Sample – SetMaintenanceDetails.groovy

Prerequisites: json.jar

Common Functions: See CSS Common Helper Functions for Groovy

class DailyMaintenanceWithSkipNextv1 {


	def userName  // PBCS user name
	def password  // PBCS user password
	def serverUrl  // PBCS server URL
	def lcmVersion = "v1"; // Version of the PBCS API that you are

	

	

	void runDailyMaintenanceWithSkipNext() throws Exception {
	    def skipNext = "false"; //true or false based on requirement

		JSONObject params = new JSONObject();
		params.put("skipNext",skipNext); 
	
		String urlString = String.format("%s/interop/rest/%s/services/maintenancewindow", serverUrl, lcmVersion);
		String response = executeRequest(urlString, "POST", params.toString(), "application/json");
		waitForCompletion(fetchPingUrlFromResponse(response, "Job Status"));
	}

}