Kiln » KilnSupportScripts Powershell Scripts to help monitor a Kiln environment. Contact Fog Creek support before using.
Clone URL:  
Pushed to one repository · View In Graph Contained in tip

adding .Timeout set to 300000 ms or 300s (5 mins). Any more than this and there's something else wrong with the Storage Service that needs investigation, or a slow server.

Changeset c0eb4bbbc566

Parent 3e61a62ffd2c

by Profile picture of Developer Wiki Admin AccountDeveloper Wiki Admin Account

Changes to one file · Browse files at c0eb4bbbc566 Showing diff from parent 3e61a62ffd2c Diff from another changeset...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
 
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
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" + $webRequest.Timeout = 300000   $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