Hadoop Change Host Component State Write Action

Ambari.SCOM.Management.Module.ChangeHostComponentStateWriteAction (WriteActionModuleType)

This module requests Host Component state change and tracks the progress of the request.

Element properties:

TypeWriteActionModuleType
IsolationAny
AccessibilityInternal
RunAsAmbari.SCOM.Profile.Workflow
InputTypeSystem.BaseData

Member Modules:

ID Module Type TypeId RunAs 
Action WriteAction Ambari.SCOM.Management.Module.BaseChangeStateWriteAction Default

Overrideable Parameters:

IDParameterTypeSelectorDisplay NameDescription
TimeoutSecondsint$Config/TimeoutSeconds$Timeout (sec)
StatusPollingIntervalSecondsint$Config/StatusPollingIntervalSeconds$Status Polling Interval (sec)

Source Code:

<WriteActionModuleType ID="Ambari.SCOM.Management.Module.ChangeHostComponentStateWriteAction" RunAs="HDLibrary!Ambari.SCOM.Profile.Workflow" Accessibility="Internal">
<Configuration>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="TimeoutSeconds" type="xsd:int"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="TargetState" type="xsd:string"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="StatusPollingIntervalSeconds" type="xsd:int"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="OperationFriendlyName" type="xsd:string"/>
</Configuration>
<OverrideableParameters>
<OverrideableParameter ID="TimeoutSeconds" ParameterType="int" Selector="$Config/TimeoutSeconds$"/>
<OverrideableParameter ID="StatusPollingIntervalSeconds" ParameterType="int" Selector="$Config/StatusPollingIntervalSeconds$"/>
</OverrideableParameters>
<ModuleImplementation>
<Composite>
<MemberModules>
<WriteAction ID="Action" TypeID="Ambari.SCOM.Management.Module.BaseChangeStateWriteAction">
<TimeoutSeconds>$Config/TimeoutSeconds$</TimeoutSeconds>
<ScriptName>ChangeHostComponentState.ps1</ScriptName>
<MainScriptBody>## Licensed to the Apache Software Foundation (ASF) under one
## or more contributor license agreements. See the NOTICE file
## distributed with this work for additional information
## regarding copyright ownership. The ASF licenses this file
## to you under the Apache License, Version 2.0 (the
## "License"); you may not use this file except in compliance
## with the License. You may obtain a copy of the License at
##
## http://www.apache.org/licenses/LICENSE-2.0
##
## Unless required by applicable law or agreed to in writing,
## software distributed under the License is distributed on an
## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
## KIND, either express or implied. See the License for the
## specific language governing permissions and limitations
## under the License.

function Main() {
TraceTaskExecution "Changing Host Component state to $TargetState."

$response = InvokeRestAPI $MonitoringAmbariUri $Username $Password 'PUT' ('{"RequestInfo":{"context":"' + $OperationFriendlyName + '"},"Body":{"HostRoles":{"state":"' + $TargetState +'"}}}')
if ($response.StatusCode -eq 200) {
TraceTaskExecution "Host Component already in $TargetState state."
return
}

if ($response.StatusCode -lt 200 -or $response.StatusCode -ge 300) {
throw "Failed to change Host Component state."
}

$response = InvokeRestAPI $response.Body.href $Username $Password
WaitForTasksCompletion $response.Body.tasks
}
</MainScriptBody>
<AmbariUri>$Target/Property[Type="HDLibrary!Ambari.SCOM.AmbariManagedEntity"]/AmbariUri$</AmbariUri>
<TargetState>$Config/TargetState$</TargetState>
<StatusPollingIntervalSeconds>$Config/StatusPollingIntervalSeconds$</StatusPollingIntervalSeconds>
<OperationFriendlyName>$Config/OperationFriendlyName$</OperationFriendlyName>
</WriteAction>
</MemberModules>
<Composition>
<Node ID="Action"/>
</Composition>
</Composite>
</ModuleImplementation>
<InputType>System!System.BaseData</InputType>
</WriteActionModuleType>