right_link 5.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. data/actors/agent_manager.rb +88 -0
  2. data/actors/instance_scheduler.rb +321 -0
  3. data/actors/instance_services.rb +64 -0
  4. data/actors/instance_setup.rb +567 -0
  5. data/bin/cloud +25 -0
  6. data/bin/cook_runner +44 -0
  7. data/bin/deploy +120 -0
  8. data/bin/enroll +385 -0
  9. data/bin/rad +32 -0
  10. data/bin/rchk +29 -0
  11. data/bin/rnac +39 -0
  12. data/bin/rs_connect +33 -0
  13. data/bin/rs_log_level +31 -0
  14. data/bin/rs_ohai +28 -0
  15. data/bin/rs_reenroll +31 -0
  16. data/bin/rs_run_recipe +34 -0
  17. data/bin/rs_run_right_script +34 -0
  18. data/bin/rs_shutdown +33 -0
  19. data/bin/rs_tag +33 -0
  20. data/bin/rs_thunk +33 -0
  21. data/bin/rstat +31 -0
  22. data/bin/system +16 -0
  23. data/ext/Rakefile +18 -0
  24. data/init/config.yml +5 -0
  25. data/init/init.rb +79 -0
  26. data/lib/chef/ohai_setup.rb +51 -0
  27. data/lib/chef/plugins/cloud.rb +91 -0
  28. data/lib/chef/plugins/cloudstack.rb +23 -0
  29. data/lib/chef/plugins/ec2.rb +23 -0
  30. data/lib/chef/plugins/linux/block_device2.rb +24 -0
  31. data/lib/chef/plugins/rackspace.rb +23 -0
  32. data/lib/chef/plugins/rightscale.rb +125 -0
  33. data/lib/chef/plugins/windows/network.rb +114 -0
  34. data/lib/chef/plugins.rb +74 -0
  35. data/lib/chef/providers/dns_dnsmadeeasy_provider.rb +81 -0
  36. data/lib/chef/providers/dns_resource.rb +100 -0
  37. data/lib/chef/providers/executable_schedule_provider.rb +70 -0
  38. data/lib/chef/providers/executable_schedule_resource.rb +144 -0
  39. data/lib/chef/providers/remote_recipe_provider.rb +86 -0
  40. data/lib/chef/providers/remote_recipe_resource.rb +101 -0
  41. data/lib/chef/providers/right_link_tag_provider.rb +73 -0
  42. data/lib/chef/providers/right_link_tag_resource.rb +59 -0
  43. data/lib/chef/providers/right_script_provider.rb +190 -0
  44. data/lib/chef/providers/right_script_resource.rb +113 -0
  45. data/lib/chef/providers/rs_shutdown_provider.rb +75 -0
  46. data/lib/chef/providers/rs_shutdown_resource.rb +55 -0
  47. data/lib/chef/providers/server_collection_provider.rb +66 -0
  48. data/lib/chef/providers/server_collection_resource.rb +93 -0
  49. data/lib/chef/providers/windows/powershell_provider.rb +151 -0
  50. data/lib/chef/providers/windows/powershell_resource.rb +111 -0
  51. data/lib/chef/providers/windows/unsupported_provider.rb +51 -0
  52. data/lib/chef/right_providers.rb +55 -0
  53. data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/ChefNodeCmdlet.csproj +104 -0
  54. data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/ChefNodeCmdlet.dll-Help.xml +141 -0
  55. data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/Exceptions.cs +182 -0
  56. data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/GetChefNodeCommand.cs +58 -0
  57. data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/GetChefNodeRequest.cs +46 -0
  58. data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/GetChefNodeResponse.cs +45 -0
  59. data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/GetCurrentResourceCommand.cs +58 -0
  60. data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/GetCurrentResourceRequest.cs +46 -0
  61. data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/GetCurrentResourceResponse.cs +45 -0
  62. data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/GetNewResourceCommand.cs +58 -0
  63. data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/GetNewResourceRequest.cs +46 -0
  64. data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/GetNewResourceResponse.cs +45 -0
  65. data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/GetNextActionCommand.cs +178 -0
  66. data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/GetNextActionRequest.cs +67 -0
  67. data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/GetNextActionResponse.cs +58 -0
  68. data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/GetNodeValueCommandBase.cs +142 -0
  69. data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/GetNodeValueRequestBase.cs +64 -0
  70. data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/GetNodeValueResponseBase.cs +69 -0
  71. data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/JsonTransport.cs +110 -0
  72. data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/PipeClient.cs +158 -0
  73. data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/PipeServer.cs +142 -0
  74. data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/Properties/AssemblyInfo.cs +16 -0
  75. data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/ProtocolConstants.cs +55 -0
  76. data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/ProtocolUtilities.cs +77 -0
  77. data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/ReadMe.txt +53 -0
  78. data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/SetChefNodeCommand.cs +59 -0
  79. data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/SetChefNodeRequest.cs +46 -0
  80. data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/SetChefNodeResponse.cs +58 -0
  81. data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/SetCurrentResourceCommand.cs +59 -0
  82. data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/SetCurrentResourceRequest.cs +46 -0
  83. data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/SetCurrentResourceResponse.cs +40 -0
  84. data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/SetNewResourceCommand.cs +59 -0
  85. data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/SetNewResourceRequest.cs +46 -0
  86. data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/SetNewResourceResponse.cs +40 -0
  87. data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/SetNodeValueCommandBase.cs +293 -0
  88. data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/SetNodeValueRequestBase.cs +75 -0
  89. data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/SetNodeValueResponseBase.cs +45 -0
  90. data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/Transport.cs +91 -0
  91. data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet.sln +35 -0
  92. data/lib/chef/windows/ChefNodeCmdlet/TestChefNodeCmdlet/Program.cs +374 -0
  93. data/lib/chef/windows/ChefNodeCmdlet/TestChefNodeCmdlet/Properties/AssemblyInfo.cs +16 -0
  94. data/lib/chef/windows/ChefNodeCmdlet/TestChefNodeCmdlet/TestChefNodeCmdlet.csproj +65 -0
  95. data/lib/chef/windows/ChefNodeCmdlet/TestNextActionCmdlet/Program.cs +136 -0
  96. data/lib/chef/windows/ChefNodeCmdlet/TestNextActionCmdlet/Properties/AssemblyInfo.cs +36 -0
  97. data/lib/chef/windows/ChefNodeCmdlet/TestNextActionCmdlet/ReadMe.txt +46 -0
  98. data/lib/chef/windows/ChefNodeCmdlet/TestNextActionCmdlet/TestNextActionCmdlet.csproj +68 -0
  99. data/lib/chef/windows/bin/Newtonsoft.Json.dll +0 -0
  100. data/lib/chef/windows/chef_node_server.rb +463 -0
  101. data/lib/chef/windows/dynamic_powershell_provider.rb +296 -0
  102. data/lib/chef/windows/pipe_server.rb +283 -0
  103. data/lib/chef/windows/powershell_host.rb +285 -0
  104. data/lib/chef/windows/powershell_pipe_server.rb +136 -0
  105. data/lib/chef/windows/powershell_provider_base.rb +92 -0
  106. data/lib/chef/windows/scripts/run_loop.ps1 +105 -0
  107. data/lib/clouds/cloud.rb +557 -0
  108. data/lib/clouds/cloud_factory.rb +250 -0
  109. data/lib/clouds/cloud_utilities.rb +244 -0
  110. data/lib/clouds/clouds/azure.rb +106 -0
  111. data/lib/clouds/clouds/cloudstack.rb +114 -0
  112. data/lib/clouds/clouds/ec2.rb +113 -0
  113. data/lib/clouds/clouds/eucalyptus.rb +46 -0
  114. data/lib/clouds/clouds/google.rb +102 -0
  115. data/lib/clouds/clouds/none.rb +76 -0
  116. data/lib/clouds/clouds/openstack.rb +30 -0
  117. data/lib/clouds/clouds/rackspace-ng.rb +54 -0
  118. data/lib/clouds/clouds/rackspace.rb +78 -0
  119. data/lib/clouds/clouds/softlayer.rb +91 -0
  120. data/lib/clouds/metadata_formatter.rb +108 -0
  121. data/lib/clouds/metadata_provider.rb +128 -0
  122. data/lib/clouds/metadata_source.rb +87 -0
  123. data/lib/clouds/metadata_sources/certificate_metadata_source.rb +207 -0
  124. data/lib/clouds/metadata_sources/config_drive_metadata_source.rb +129 -0
  125. data/lib/clouds/metadata_sources/file_metadata_source.rb +74 -0
  126. data/lib/clouds/metadata_sources/http_metadata_source.rb +277 -0
  127. data/lib/clouds/metadata_sources/selective_metadata_source.rb +122 -0
  128. data/lib/clouds/metadata_tree_climber.rb +144 -0
  129. data/lib/clouds/metadata_writer.rb +155 -0
  130. data/lib/clouds/metadata_writers/dictionary_metadata_writer.rb +72 -0
  131. data/lib/clouds/metadata_writers/ruby_metadata_writer.rb +76 -0
  132. data/lib/clouds/metadata_writers/shell_metadata_writer.rb +121 -0
  133. data/lib/clouds/register_clouds.rb +34 -0
  134. data/lib/clouds.rb +32 -0
  135. data/lib/gem_dependencies.rb +83 -0
  136. data/lib/git_hooks/commit-msg.rb +7 -0
  137. data/lib/instance/agent_config.rb +168 -0
  138. data/lib/instance/agent_watcher.rb +233 -0
  139. data/lib/instance/audit_cook_stub.rb +104 -0
  140. data/lib/instance/audit_proxy.rb +247 -0
  141. data/lib/instance/bundle_queue.rb +104 -0
  142. data/lib/instance/cook/agent_connection.rb +109 -0
  143. data/lib/instance/cook/audit_logger.rb +165 -0
  144. data/lib/instance/cook/audit_stub.rb +142 -0
  145. data/lib/instance/cook/ca-bundle.crt +2794 -0
  146. data/lib/instance/cook/chef_state.rb +211 -0
  147. data/lib/instance/cook/cook.rb +306 -0
  148. data/lib/instance/cook/cook_state.rb +298 -0
  149. data/lib/instance/cook/cookbook_path_mapping.rb +66 -0
  150. data/lib/instance/cook/cookbook_repo_retriever.rb +190 -0
  151. data/lib/instance/cook/executable_sequence.rb +765 -0
  152. data/lib/instance/cook/external_parameter_gatherer.rb +190 -0
  153. data/lib/instance/cook/repose_downloader.rb +349 -0
  154. data/lib/instance/cook/shutdown_request_proxy.rb +121 -0
  155. data/lib/instance/cook.rb +41 -0
  156. data/lib/instance/downloader.rb +208 -0
  157. data/lib/instance/duplicable.rb +67 -0
  158. data/lib/instance/exceptions.rb +49 -0
  159. data/lib/instance/executable_sequence_proxy.rb +278 -0
  160. data/lib/instance/instance_commands.rb +577 -0
  161. data/lib/instance/instance_state.rb +633 -0
  162. data/lib/instance/json_utilities.rb +102 -0
  163. data/lib/instance/login_manager.rb +533 -0
  164. data/lib/instance/login_user_manager.rb +522 -0
  165. data/lib/instance/message_encoder.rb +118 -0
  166. data/lib/instance/multi_thread_bundle_queue.rb +232 -0
  167. data/lib/instance/operation_context.rb +60 -0
  168. data/lib/instance/options_bag.rb +65 -0
  169. data/lib/instance/payload_formatter.rb +46 -0
  170. data/lib/instance/policy.rb +53 -0
  171. data/lib/instance/policy_audit.rb +100 -0
  172. data/lib/instance/policy_manager.rb +146 -0
  173. data/lib/instance/reenroll_manager.rb +104 -0
  174. data/lib/instance/right_scripts_cookbook.rb +181 -0
  175. data/lib/instance/shutdown_request.rb +221 -0
  176. data/lib/instance/single_thread_bundle_queue.rb +189 -0
  177. data/lib/instance/volume_management.rb +450 -0
  178. data/lib/instance.rb +50 -0
  179. data/lib/repo_conf_generators/apt_conf_generators.rb +106 -0
  180. data/lib/repo_conf_generators/gem_conf_generators.rb +80 -0
  181. data/lib/repo_conf_generators/rightscale_conf_generators.rb +254 -0
  182. data/lib/repo_conf_generators/rightscale_key.pub +17 -0
  183. data/lib/repo_conf_generators/yum_conf_generators.rb +225 -0
  184. data/lib/repo_conf_generators.rb +30 -0
  185. data/lib/run_shell.rb +28 -0
  186. data/scripts/agent_checker.rb +571 -0
  187. data/scripts/agent_controller.rb +247 -0
  188. data/scripts/agent_deployer.rb +148 -0
  189. data/scripts/bundle_runner.rb +336 -0
  190. data/scripts/cloud_controller.rb +176 -0
  191. data/scripts/log_level_manager.rb +142 -0
  192. data/scripts/ohai_runner.rb +33 -0
  193. data/scripts/reenroller.rb +193 -0
  194. data/scripts/server_importer.rb +293 -0
  195. data/scripts/shutdown_client.rb +183 -0
  196. data/scripts/system_configurator.rb +367 -0
  197. data/scripts/tagger.rb +381 -0
  198. data/scripts/thunker.rb +356 -0
  199. metadata +418 -0
@@ -0,0 +1,142 @@
1
+ /////////////////////////////////////////////////////////////////////////
2
+ // Copyright (c) 2010-2011 RightScale Inc
3
+ //
4
+ // Permission is hereby granted, free of charge, to any person obtaining
5
+ // a copy of this software and associated documentation files (the
6
+ // "Software"), to deal in the Software without restriction, including
7
+ // without limitation the rights to use, copy, modify, merge, publish,
8
+ // distribute, sublicense, and/or sell copies of the Software, and to
9
+ // permit persons to whom the Software is furnished to do so, subject to
10
+ // the following conditions:
11
+ //
12
+ // The above copyright notice and this permission notice shall be
13
+ // included in all copies or substantial portions of the Software.
14
+ //
15
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ /////////////////////////////////////////////////////////////////////////
23
+ using System;
24
+ using System.IO;
25
+ using System.IO.Pipes;
26
+ using Newtonsoft.Json;
27
+
28
+ namespace RightScale
29
+ {
30
+ namespace Common
31
+ {
32
+ namespace Protocol
33
+ {
34
+ // represents a generic text-based pipe server which communicates via a user-supplied transport.
35
+ // the transport must convert requests/responses to discrete text messages delimited by newline.
36
+ public class PipeServer
37
+ {
38
+ // Summary:
39
+ // constructor for a named pipe server.
40
+ //
41
+ // Parameters:
42
+ // pipeName:
43
+ // name of pipe to use when connecting to server.
44
+ public PipeServer(string pipeName, ITransport transport)
45
+ {
46
+ this.pipeName = pipeName;
47
+ this.transport = transport;
48
+ }
49
+
50
+ // Summary:
51
+ // creates a bidirectional pipe server and waits for client to connect.
52
+ public void WaitForConnection()
53
+ {
54
+ // create bidirectional pipe server.
55
+ pipeServer = new NamedPipeServerStream(pipeName);
56
+ pipeServer.WaitForConnection();
57
+
58
+ // create writer.
59
+ streamWriter = new StreamWriter(pipeServer);
60
+ streamWriter.AutoFlush = true;
61
+
62
+ // create reader.
63
+ streamReader = new StreamReader(pipeServer);
64
+ }
65
+
66
+ // Summary:
67
+ // receives the next request.
68
+ //
69
+ // Parameters:
70
+ // T:
71
+ // expected type for request
72
+ //
73
+ // Returns:
74
+ // received request object or null if client closed connection
75
+ public T Receive<T>()
76
+ {
77
+ string text = streamReader.ReadLine();
78
+
79
+ return (null == text) ? default(T) : transport.ConvertStringToObject<T>(text);
80
+ }
81
+
82
+ // Summary:
83
+ // sends the next response.
84
+ //
85
+ // Parameters:
86
+ // response:
87
+ // response object to send
88
+ public void Send(object response)
89
+ {
90
+ string text = transport.ConvertObjectToString(response);
91
+
92
+ streamWriter.WriteLine(text);
93
+ }
94
+
95
+ // Summary:
96
+ // closes the client and releases all resources.
97
+ public void Close()
98
+ {
99
+ if (null != streamReader)
100
+ {
101
+ try
102
+ {
103
+ streamReader.Close();
104
+ }
105
+ catch (Exception)
106
+ {
107
+ }
108
+ streamReader = null;
109
+ }
110
+ if (null != streamWriter)
111
+ {
112
+ try
113
+ {
114
+ streamWriter.Close();
115
+ }
116
+ catch (Exception)
117
+ {
118
+ }
119
+ streamWriter = null;
120
+ }
121
+ if (null != pipeServer)
122
+ {
123
+ try
124
+ {
125
+ pipeServer.Close();
126
+ }
127
+ catch (Exception)
128
+ {
129
+ }
130
+ pipeServer = null;
131
+ }
132
+ }
133
+
134
+ private ITransport transport = null;
135
+ private NamedPipeServerStream pipeServer = null;
136
+ private StreamReader streamReader = null;
137
+ private StreamWriter streamWriter = null;
138
+ private string pipeName = null;
139
+ }
140
+ }
141
+ }
142
+ }
@@ -0,0 +1,16 @@
1
+ using System.Reflection;
2
+ using System.Runtime.CompilerServices;
3
+ using System.Runtime.InteropServices;
4
+
5
+ [assembly: AssemblyTitle("ChefNodeCmdlet")]
6
+ [assembly: AssemblyDescription("")]
7
+ [assembly: AssemblyConfiguration("")]
8
+ [assembly: AssemblyCompany("RightScale")]
9
+ [assembly: AssemblyProduct("ChefNodeCmdlet")]
10
+ [assembly: AssemblyCopyright("Copyright (c) 2010-2011 RightScale Inc")]
11
+ [assembly: AssemblyTrademark("")]
12
+ [assembly: AssemblyCulture("")]
13
+ [assembly: ComVisible(false)]
14
+ [assembly: Guid("b3ea1d63-1b47-4e44-9077-fcd0707dcf57")]
15
+ [assembly: AssemblyVersion("1.0.0.1")]
16
+ [assembly: AssemblyFileVersion("1.0.0.1")]
@@ -0,0 +1,55 @@
1
+ /////////////////////////////////////////////////////////////////////////
2
+ // Copyright (c) 2010-2011 RightScale Inc
3
+ //
4
+ // Permission is hereby granted, free of charge, to any person obtaining
5
+ // a copy of this software and associated documentation files (the
6
+ // "Software"), to deal in the Software without restriction, including
7
+ // without limitation the rights to use, copy, modify, merge, publish,
8
+ // distribute, sublicense, and/or sell copies of the Software, and to
9
+ // permit persons to whom the Software is furnished to do so, subject to
10
+ // the following conditions:
11
+ //
12
+ // The above copyright notice and this permission notice shall be
13
+ // included in all copies or substantial portions of the Software.
14
+ //
15
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ /////////////////////////////////////////////////////////////////////////
23
+ using System;
24
+
25
+ namespace RightScale
26
+ {
27
+ namespace Chef
28
+ {
29
+ namespace Protocol
30
+ {
31
+ public class Constants
32
+ {
33
+ public enum CommandType
34
+ {
35
+ GET_CHEFNODE,
36
+ SET_CHEFNODE,
37
+ }
38
+
39
+ public static string JSON_COMMAND_KEY = "Command";
40
+ public static string JSON_PATH_KEY = "Path";
41
+ public static string JSON_NODE_VALUE_KEY = "NodeValue";
42
+ public static string JSON_NEXT_ACTION_KEY = "NextAction";
43
+ public static string JSON_LAST_EXIT_CODE_KEY = "LastExitCode";
44
+
45
+ public static string CHEF_NODE_PIPE_NAME = "chef_node_D1D6B540-5125-4c00-8ABF-412417774DD5";
46
+
47
+ public static int MAX_CLIENT_RETRIES = 10;
48
+
49
+ public static int CHEF_NODE_CONNECT_TIMEOUT_MSECS = 30 * 1000; // 30 seconds
50
+ public static int NEXT_ACTION_CONNECT_TIMEOUT_MSECS = 30 * 1000; // 30 seconds
51
+ public static int SLEEP_BETWEEN_CLIENT_RETRIES_MSECS = 100;
52
+ }
53
+ }
54
+ }
55
+ }
@@ -0,0 +1,77 @@
1
+ /////////////////////////////////////////////////////////////////////////
2
+ // Copyright (c) 2010-2011 RightScale Inc
3
+ //
4
+ // Permission is hereby granted, free of charge, to any person obtaining
5
+ // a copy of this software and associated documentation files (the
6
+ // "Software"), to deal in the Software without restriction, including
7
+ // without limitation the rights to use, copy, modify, merge, publish,
8
+ // distribute, sublicense, and/or sell copies of the Software, and to
9
+ // permit persons to whom the Software is furnished to do so, subject to
10
+ // the following conditions:
11
+ //
12
+ // The above copyright notice and this permission notice shall be
13
+ // included in all copies or substantial portions of the Software.
14
+ //
15
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ /////////////////////////////////////////////////////////////////////////
23
+ using System;
24
+ using System.Collections;
25
+
26
+ namespace RightScale
27
+ {
28
+ namespace Chef
29
+ {
30
+ namespace Protocol
31
+ {
32
+ public class Utilities
33
+ {
34
+ // Summary:
35
+ // generates a printable form of an object passed via Chef node protocol.
36
+ //
37
+ // Returns:
38
+ // printable string for a node value.
39
+ public static string GetPrettyNodeValue(object nodeValue)
40
+ {
41
+ object prettyValue = nodeValue;
42
+
43
+ if (null == nodeValue)
44
+ {
45
+ prettyValue = "NULL";
46
+ }
47
+ else if (nodeValue is String)
48
+ {
49
+ prettyValue = "\"" + nodeValue + "\"";
50
+ }
51
+
52
+ // FIX: hash and array
53
+
54
+ return prettyValue.ToString();
55
+ }
56
+
57
+ // Summary:
58
+ // converts a collection of object to an array of strings.
59
+ //
60
+ // Returns:
61
+ // string array or empty
62
+ public static string[] CollectionToStringArray(ICollection collection)
63
+ {
64
+ string[] array = new string[collection.Count];
65
+
66
+ int index = 0;
67
+ foreach (object element in collection)
68
+ {
69
+ array[index++] = element.ToString();
70
+ }
71
+
72
+ return array;
73
+ }
74
+ }
75
+ }
76
+ }
77
+ }
@@ -0,0 +1,53 @@
1
+ Copyright (c) 2010-2011 RightScale Inc
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+
22
+
23
+ Overview
24
+ --------
25
+
26
+ The "ChefNodeCmdlet.dll" module provides a set of cmdlets which extend the
27
+ functionality of the PowerShell environment to include tools useful for writing
28
+ Chef recipes for Windows.
29
+
30
+ See https://rightscale.onconfluence.com/display/rightscale/RightLink+ChefNodeCmdlet
31
+
32
+
33
+ Debugging from Visual Studio
34
+ ----------------------------
35
+ VS 2008 C# projects appear not to allow variable substitution in debug command
36
+ lines (as has been allowed previously by C++ projects). This is likely to
37
+ improve in future, but in the meantime hardcode the .dll path (which gets
38
+ saved in your personal "ChefNodeCmdlet.csproj.user" file and is never checked
39
+ into source control).
40
+
41
+ Use the installed PowerShell 2.0 location as the executable path and use the
42
+ following as the command line string (substituting .dll path as needed).
43
+
44
+ Example:
45
+
46
+ Start external program:
47
+ C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
48
+
49
+ Command line arguments:
50
+ -NoExit -Command "&{ import-module 'C:\dev\right_net\instance\right_link\chef\lib\windows\ChefNodeCmdlet\Debug\ChefNodeCmdlet.dll' -verbose }"
51
+
52
+ More detailed debugging arguments for testing "get-NextAction" with right_net main loop using pipe name 'testing':
53
+ -NoExit -Command "&{ import-module 'C:\dev\right_net\instance\right_link\chef\lib\windows\ChefNodeCmdlet\Debug\ChefNodeCmdlet.dll'; $RS_pipeName = 'next_action_testing'; $VerbosePreference='Continue'; $DebugPreference='Continue'; &'C:\dev\right_net\instance\right_link\chef\lib\windows\scripts\run_loop.ps1' }"
@@ -0,0 +1,59 @@
1
+ /////////////////////////////////////////////////////////////////////////
2
+ // Copyright (c) 2010-2011 RightScale Inc
3
+ //
4
+ // Permission is hereby granted, free of charge, to any person obtaining
5
+ // a copy of this software and associated documentation files (the
6
+ // "Software"), to deal in the Software without restriction, including
7
+ // without limitation the rights to use, copy, modify, merge, publish,
8
+ // distribute, sublicense, and/or sell copies of the Software, and to
9
+ // permit persons to whom the Software is furnished to do so, subject to
10
+ // the following conditions:
11
+ //
12
+ // The above copyright notice and this permission notice shall be
13
+ // included in all copies or substantial portions of the Software.
14
+ //
15
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ /////////////////////////////////////////////////////////////////////////
23
+ using System;
24
+ using System.Collections;
25
+ using System.Management.Automation;
26
+ using System.Threading;
27
+ using RightScale.Common.Protocol;
28
+ using RightScale.Chef.Protocol;
29
+ using RightScale.Powershell.Exceptions;
30
+
31
+ namespace RightScale
32
+ {
33
+ namespace Powershell
34
+ {
35
+ namespace Commands
36
+ {
37
+ // Provides the Set-ChefNode cmdlet.
38
+ [Cmdlet(VerbsCommon.Set, "ChefNode")]
39
+ [CmdletBinding(DefaultParameterSetName = "ByPositionStringParameterSetName")]
40
+ public class SetChefNodeCommand : SetNodeValueCommandBase
41
+ {
42
+ protected override SetNodeValueRequestBase CreateRequest()
43
+ {
44
+ return new SetChefNodeRequest(Path, GetNormalizedValue());
45
+ }
46
+
47
+ protected override ChefNodeCmdletExceptionBase CreateException(string message)
48
+ {
49
+ return new SetChefNodeException(message);
50
+ }
51
+
52
+ protected override ChefNodeCmdletExceptionBase CreateException(IDictionary responseHash)
53
+ {
54
+ return new SetChefNodeException(responseHash);
55
+ }
56
+ }
57
+ }
58
+ }
59
+ }
@@ -0,0 +1,46 @@
1
+ /////////////////////////////////////////////////////////////////////////
2
+ // Copyright (c) 2010-2011 RightScale Inc
3
+ //
4
+ // Permission is hereby granted, free of charge, to any person obtaining
5
+ // a copy of this software and associated documentation files (the
6
+ // "Software"), to deal in the Software without restriction, including
7
+ // without limitation the rights to use, copy, modify, merge, publish,
8
+ // distribute, sublicense, and/or sell copies of the Software, and to
9
+ // permit persons to whom the Software is furnished to do so, subject to
10
+ // the following conditions:
11
+ //
12
+ // The above copyright notice and this permission notice shall be
13
+ // included in all copies or substantial portions of the Software.
14
+ //
15
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ /////////////////////////////////////////////////////////////////////////
23
+ using System;
24
+ using System.Collections;
25
+
26
+ namespace RightScale
27
+ {
28
+ namespace Chef
29
+ {
30
+ namespace Protocol
31
+ {
32
+ // data for a Set-ChefNode request
33
+ public class SetChefNodeRequest : SetNodeValueRequestBase
34
+ {
35
+ public SetChefNodeRequest()
36
+ {
37
+ }
38
+
39
+ public SetChefNodeRequest(ICollection path, object nodeValue)
40
+ : base(path, nodeValue)
41
+ {
42
+ }
43
+ }
44
+ }
45
+ }
46
+ }
@@ -0,0 +1,58 @@
1
+ /////////////////////////////////////////////////////////////////////////
2
+ // Copyright (c) 2010-2011 RightScale Inc
3
+ //
4
+ // Permission is hereby granted, free of charge, to any person obtaining
5
+ // a copy of this software and associated documentation files (the
6
+ // "Software"), to deal in the Software without restriction, including
7
+ // without limitation the rights to use, copy, modify, merge, publish,
8
+ // distribute, sublicense, and/or sell copies of the Software, and to
9
+ // permit persons to whom the Software is furnished to do so, subject to
10
+ // the following conditions:
11
+ //
12
+ // The above copyright notice and this permission notice shall be
13
+ // included in all copies or substantial portions of the Software.
14
+ //
15
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ /////////////////////////////////////////////////////////////////////////
23
+ using System;
24
+
25
+ namespace RightScale
26
+ {
27
+ namespace Chef
28
+ {
29
+ namespace Protocol
30
+ {
31
+ // data for a Set-ChefNode response
32
+ public class SetChefNodeResponse : SetNodeValueResponseBase
33
+ {
34
+ public string[] Path
35
+ {
36
+ get { return path; }
37
+ set { path = value; }
38
+ }
39
+
40
+ public SetChefNodeResponse()
41
+ {
42
+ }
43
+
44
+ public SetChefNodeResponse(string[] path)
45
+ {
46
+ this.path = path;
47
+ }
48
+
49
+ public override string ToString()
50
+ {
51
+ return String.Format("SetChefNodeResponse: {{ Path = node[{0}] }}", String.Join("][", path));
52
+ }
53
+
54
+ private string[] path;
55
+ }
56
+ }
57
+ }
58
+ }
@@ -0,0 +1,59 @@
1
+ /////////////////////////////////////////////////////////////////////////
2
+ // Copyright (c) 2010-2011 RightScale Inc
3
+ //
4
+ // Permission is hereby granted, free of charge, to any person obtaining
5
+ // a copy of this software and associated documentation files (the
6
+ // "Software"), to deal in the Software without restriction, including
7
+ // without limitation the rights to use, copy, modify, merge, publish,
8
+ // distribute, sublicense, and/or sell copies of the Software, and to
9
+ // permit persons to whom the Software is furnished to do so, subject to
10
+ // the following conditions:
11
+ //
12
+ // The above copyright notice and this permission notice shall be
13
+ // included in all copies or substantial portions of the Software.
14
+ //
15
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ /////////////////////////////////////////////////////////////////////////
23
+ using System;
24
+ using System.Collections;
25
+ using System.Management.Automation;
26
+ using System.Threading;
27
+ using RightScale.Common.Protocol;
28
+ using RightScale.Chef.Protocol;
29
+ using RightScale.Powershell.Exceptions;
30
+
31
+ namespace RightScale
32
+ {
33
+ namespace Powershell
34
+ {
35
+ namespace Commands
36
+ {
37
+ // Provides the Set-CurrentResource cmdlet.
38
+ [Cmdlet(VerbsCommon.Set, "CurrentResource")]
39
+ [CmdletBinding(DefaultParameterSetName = "ByPositionStringParameterSetName")]
40
+ public class SetCurrentResourceCommand : SetNodeValueCommandBase
41
+ {
42
+ protected override SetNodeValueRequestBase CreateRequest()
43
+ {
44
+ return new SetCurrentResourceRequest(Path, GetNormalizedValue());
45
+ }
46
+
47
+ protected override ChefNodeCmdletExceptionBase CreateException(string message)
48
+ {
49
+ return new SetCurrentResourceException(message);
50
+ }
51
+
52
+ protected override ChefNodeCmdletExceptionBase CreateException(IDictionary responseHash)
53
+ {
54
+ return new SetCurrentResourceException(responseHash);
55
+ }
56
+ }
57
+ }
58
+ }
59
+ }
@@ -0,0 +1,46 @@
1
+ /////////////////////////////////////////////////////////////////////////
2
+ // Copyright (c) 2010-2011 RightScale Inc
3
+ //
4
+ // Permission is hereby granted, free of charge, to any person obtaining
5
+ // a copy of this software and associated documentation files (the
6
+ // "Software"), to deal in the Software without restriction, including
7
+ // without limitation the rights to use, copy, modify, merge, publish,
8
+ // distribute, sublicense, and/or sell copies of the Software, and to
9
+ // permit persons to whom the Software is furnished to do so, subject to
10
+ // the following conditions:
11
+ //
12
+ // The above copyright notice and this permission notice shall be
13
+ // included in all copies or substantial portions of the Software.
14
+ //
15
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ /////////////////////////////////////////////////////////////////////////
23
+ using System;
24
+ using System.Collections;
25
+
26
+ namespace RightScale
27
+ {
28
+ namespace Chef
29
+ {
30
+ namespace Protocol
31
+ {
32
+ // data for a Set-CurrentResource request
33
+ public class SetCurrentResourceRequest : SetNodeValueRequestBase
34
+ {
35
+ public SetCurrentResourceRequest()
36
+ {
37
+ }
38
+
39
+ public SetCurrentResourceRequest(ICollection path, object nodeValue)
40
+ : base(path, nodeValue)
41
+ {
42
+ }
43
+ }
44
+ }
45
+ }
46
+ }
@@ -0,0 +1,40 @@
1
+ /////////////////////////////////////////////////////////////////////////
2
+ // Copyright (c) 2010-2011 RightScale Inc
3
+ //
4
+ // Permission is hereby granted, free of charge, to any person obtaining
5
+ // a copy of this software and associated documentation files (the
6
+ // "Software"), to deal in the Software without restriction, including
7
+ // without limitation the rights to use, copy, modify, merge, publish,
8
+ // distribute, sublicense, and/or sell copies of the Software, and to
9
+ // permit persons to whom the Software is furnished to do so, subject to
10
+ // the following conditions:
11
+ //
12
+ // The above copyright notice and this permission notice shall be
13
+ // included in all copies or substantial portions of the Software.
14
+ //
15
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ /////////////////////////////////////////////////////////////////////////
23
+ using System;
24
+
25
+ namespace RightScale
26
+ {
27
+ namespace Chef
28
+ {
29
+ namespace Protocol
30
+ {
31
+ // data for a Set-CurrentResource response
32
+ public class SetCurrentResourceResponse : SetNodeValueResponseBase
33
+ {
34
+ public SetCurrentResourceResponse()
35
+ {
36
+ }
37
+ }
38
+ }
39
+ }
40
+ }