## 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 TraceTaskExecution($message) {
Write-Host "[$((Get-Date).ToString('MM/dd/yyyy HH:mm:ss'))] $message"
}
function WaitForTasksCompletion($scheduledTasks) {
$tasks = [System.Collections.ArrayList] $scheduledTasks
while ($tasks.Count -gt 0) {
Start-Sleep -s $StatusPollingInterval
TraceTaskExecution "Task $($response.Tasks.command) for $($response.Tasks.role) on $($response.Tasks.host_name) is $($response.Tasks.status)."
if ($response.Tasks.status -ne 'COMPLETED') { continue }
if ($response.Tasks.exit_code -eq 0) {
$tasks.RemoveAt($taskIndex--)
} else {
throw "Task $($response.Tasks.command) for $($response.Tasks.role) on $($response.Tasks.host_name) failed: $($response.Tasks.stderr)."
}
}
}
}
## 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 JoinUri([string]$baseUri, [string]$segment) {
$baseUri.TrimEnd('/') + '/' + $segment.TrimStart('/')
}## 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.