by Developer Wiki Admin Account
Changes to 3 files · Browse files at 3e61a62ffd2c Showing diff from parent bb959c445c8a 57dcd44b2fb2 Diff from another changeset...
@@ -69,9 +69,9 @@ The name of the IIS Website that FogBugz and Kiln are running under. If you provide this,
the script will attempt to restart IIS if it cannot load the Kiln web page.
-.PARAMETER noRestart
- A flag which when set will force the script to only send alert messages and not
- attempt to restart any services automatically.
+.PARAMETER tryAutoRestart
+ A flag which when set will modify the behavior of the script to attempt to restart services
+ which it detects are not running or to reenqueue tasks when too many are found.
.PARAMETER reenqueuePath
The path to the Reenqueue script, this is used to try to resuscitate the Queue when problems are detected.
@@ -97,7 +97,7 @@ [string]$esUrl = "http://localhost:9200/",
[string]$queueStatsUrl = "http://localhost:56785/stats.json",
[string]$iisSiteName = "",
- [switch]$noRestart,
+ [switch]$tryAutoRestart,
[string]$reenqueuePath = ".\reenqueue_2.9_tasks.ps1"
)
@@ -303,7 +303,6 @@
-$tryAutoRestart = !($noRestart) # Needed a negative name for the parameter since the default is true. Sanity rename here.
$kssNeedsRestart = $false
$kqsNeedsRestart = $false
$iisNeedsRestart = $false
|
|
|
@@ -0,0 +1,117 @@ + <#
+.SYNOPSIS
+ Repairs all repositories on a Kiln server
+
+.DESCRIPTION
+ Uses the Kiln API to gather information about all repositories hosted on the Kiln server and then
+ issues API commands to repair each of the repositories.
+
+.EXAMPLE
+ .\repair_all_repos.ps1 -kilnUrl "http://my.fogbugz/kiln" -token "gfd4567f2g7d8f2g4d6f8sdsdg88"
+
+.PARAMETER kilnUrl
+ Where Kiln is hosted, this URL must be reachable from the local machine
+
+.PARAMETER token
+ A valid API token for the Kiln server
+
+.NOTES
+ Author: Quentin Schroeder
+ Version: 1.0
+ Date: Jan 22, 2013
+#>
+
+
+param([string]$kilnUrl = "http://localhost/kiln",
+ [string]$token = ""
+ )
+
+
+function main() {
+ if ($token -eq "") {write-host "Must provide a token to authorize access to Kiln."; exit;}
+
+ $url = "{0}/Api/1.0/Project?token={1}" -f ($kilnUrl, $token)
+ write-host ("Getting repo information from {0}" -f $url)
+ $response = (New-Object System.Net.WebClient).DownloadString($url)
+ if (!($?)) {write-host "Failed to get repo information. Confirm the kilnUrl parameter is correct."; exit;}
+
+ $responseXml = Convert-JsonToXml($response)
+ $projects = $responseXml.root.childnodes
+
+ foreach ($project in $projects) {
+ foreach ($group in $project.repoGroups.childnodes) {
+ foreach ($repo in $group.repos.childnodes) {
+ $ixRepo = $repo.ixRepo."#text"
+ $repoName = $repo.sName."#text"
+ $URI = "{0}/api/1.0/repo/{1}/repair?token={2}" -f ($kilnUrl, $ixRepo, $token)
+ write-host ("Attempting to repair repo '{0}' (ixRepo: {1})" -f ($repoName, $ixRepo) )
+ Execute-HTTPPostCommand $URI "a=1"
+ if (!($?)) {write-host "Failed!!"}
+ }
+ }
+ }
+}
+
+
+
+# This is provided as an alternative to ConvertFrom-JSON, which requires Powershell V3
+# which is not on most servers by default and requires a reboot to install.
+# Source: (https://www.cogmotive.com/blog/powershell/parsing-json-in-powershell-xml-the-member-item-is-already-present)
+Add-Type -Assembly System.ServiceModel.Web,System.Runtime.Serialization
+function Convert-JsonToXml([string]$json)
+{
+ $bytes = [byte[]][char[]]$json
+ $quotas = [System.Xml.XmlDictionaryReaderQuotas]::Max
+ $jsonReader = [System.Runtime.Serialization.Json.JsonReaderWriterFactory]::CreateJsonReader($bytes,$quotas)
+ try
+ {
+ $xml = new-object System.Xml.XmlDocument
+ $xml.Load($jsonReader)
+ $xml
+ }
+ finally
+ {
+ $jsonReader.Close()
+ }
+}
+
+
+
+# Source: (http://stackoverflow.com/questions/5246836/user-powershell-script-to-post-to-url)
+function Execute-HTTPPostCommand() {
+ param(
+ [string] $target = $null,
+ [string] $post = $null
+ )
+
+ $webRequest = [System.Net.WebRequest]::Create($target)
+ $webRequest.ContentType = "text/html"
+ $PostStr = [System.Text.Encoding]::UTF8.GetBytes($post)
+ $webrequest.ContentLength = $PostStr.Length
+ $webRequest.ServicePoint.Expect100Continue = $false
+ $webRequest.Method = "POST"
+
+ $requestStream = $webRequest.GetRequestStream()
+ $requestStream.Write($PostStr, 0,$PostStr.length)
+ $requestStream.Close()
+
+ try
+ {
+ [System.Net.WebResponse] $resp = $webRequest.GetResponse()
+ }
+ catch [Net.WebException]
+ {
+ write-host $_.Exception.ToString()
+ }
+
+ $rs = $resp.GetResponseStream()
+ [System.IO.StreamReader] $sr = New-Object System.IO.StreamReader -argumentList $rs
+ [string] $results = $sr.ReadToEnd()
+
+ return $results
+}
+
+
+
+main
+
|
Loading...