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.
- data/actors/agent_manager.rb +88 -0
- data/actors/instance_scheduler.rb +321 -0
- data/actors/instance_services.rb +64 -0
- data/actors/instance_setup.rb +567 -0
- data/bin/cloud +25 -0
- data/bin/cook_runner +44 -0
- data/bin/deploy +120 -0
- data/bin/enroll +385 -0
- data/bin/rad +32 -0
- data/bin/rchk +29 -0
- data/bin/rnac +39 -0
- data/bin/rs_connect +33 -0
- data/bin/rs_log_level +31 -0
- data/bin/rs_ohai +28 -0
- data/bin/rs_reenroll +31 -0
- data/bin/rs_run_recipe +34 -0
- data/bin/rs_run_right_script +34 -0
- data/bin/rs_shutdown +33 -0
- data/bin/rs_tag +33 -0
- data/bin/rs_thunk +33 -0
- data/bin/rstat +31 -0
- data/bin/system +16 -0
- data/ext/Rakefile +18 -0
- data/init/config.yml +5 -0
- data/init/init.rb +79 -0
- data/lib/chef/ohai_setup.rb +51 -0
- data/lib/chef/plugins/cloud.rb +91 -0
- data/lib/chef/plugins/cloudstack.rb +23 -0
- data/lib/chef/plugins/ec2.rb +23 -0
- data/lib/chef/plugins/linux/block_device2.rb +24 -0
- data/lib/chef/plugins/rackspace.rb +23 -0
- data/lib/chef/plugins/rightscale.rb +125 -0
- data/lib/chef/plugins/windows/network.rb +114 -0
- data/lib/chef/plugins.rb +74 -0
- data/lib/chef/providers/dns_dnsmadeeasy_provider.rb +81 -0
- data/lib/chef/providers/dns_resource.rb +100 -0
- data/lib/chef/providers/executable_schedule_provider.rb +70 -0
- data/lib/chef/providers/executable_schedule_resource.rb +144 -0
- data/lib/chef/providers/remote_recipe_provider.rb +86 -0
- data/lib/chef/providers/remote_recipe_resource.rb +101 -0
- data/lib/chef/providers/right_link_tag_provider.rb +73 -0
- data/lib/chef/providers/right_link_tag_resource.rb +59 -0
- data/lib/chef/providers/right_script_provider.rb +190 -0
- data/lib/chef/providers/right_script_resource.rb +113 -0
- data/lib/chef/providers/rs_shutdown_provider.rb +75 -0
- data/lib/chef/providers/rs_shutdown_resource.rb +55 -0
- data/lib/chef/providers/server_collection_provider.rb +66 -0
- data/lib/chef/providers/server_collection_resource.rb +93 -0
- data/lib/chef/providers/windows/powershell_provider.rb +151 -0
- data/lib/chef/providers/windows/powershell_resource.rb +111 -0
- data/lib/chef/providers/windows/unsupported_provider.rb +51 -0
- data/lib/chef/right_providers.rb +55 -0
- data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/ChefNodeCmdlet.csproj +104 -0
- data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/ChefNodeCmdlet.dll-Help.xml +141 -0
- data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/Exceptions.cs +182 -0
- data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/GetChefNodeCommand.cs +58 -0
- data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/GetChefNodeRequest.cs +46 -0
- data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/GetChefNodeResponse.cs +45 -0
- data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/GetCurrentResourceCommand.cs +58 -0
- data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/GetCurrentResourceRequest.cs +46 -0
- data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/GetCurrentResourceResponse.cs +45 -0
- data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/GetNewResourceCommand.cs +58 -0
- data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/GetNewResourceRequest.cs +46 -0
- data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/GetNewResourceResponse.cs +45 -0
- data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/GetNextActionCommand.cs +178 -0
- data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/GetNextActionRequest.cs +67 -0
- data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/GetNextActionResponse.cs +58 -0
- data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/GetNodeValueCommandBase.cs +142 -0
- data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/GetNodeValueRequestBase.cs +64 -0
- data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/GetNodeValueResponseBase.cs +69 -0
- data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/JsonTransport.cs +110 -0
- data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/PipeClient.cs +158 -0
- data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/PipeServer.cs +142 -0
- data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/Properties/AssemblyInfo.cs +16 -0
- data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/ProtocolConstants.cs +55 -0
- data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/ProtocolUtilities.cs +77 -0
- data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/ReadMe.txt +53 -0
- data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/SetChefNodeCommand.cs +59 -0
- data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/SetChefNodeRequest.cs +46 -0
- data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/SetChefNodeResponse.cs +58 -0
- data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/SetCurrentResourceCommand.cs +59 -0
- data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/SetCurrentResourceRequest.cs +46 -0
- data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/SetCurrentResourceResponse.cs +40 -0
- data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/SetNewResourceCommand.cs +59 -0
- data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/SetNewResourceRequest.cs +46 -0
- data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/SetNewResourceResponse.cs +40 -0
- data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/SetNodeValueCommandBase.cs +293 -0
- data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/SetNodeValueRequestBase.cs +75 -0
- data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/SetNodeValueResponseBase.cs +45 -0
- data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet/Transport.cs +91 -0
- data/lib/chef/windows/ChefNodeCmdlet/ChefNodeCmdlet.sln +35 -0
- data/lib/chef/windows/ChefNodeCmdlet/TestChefNodeCmdlet/Program.cs +374 -0
- data/lib/chef/windows/ChefNodeCmdlet/TestChefNodeCmdlet/Properties/AssemblyInfo.cs +16 -0
- data/lib/chef/windows/ChefNodeCmdlet/TestChefNodeCmdlet/TestChefNodeCmdlet.csproj +65 -0
- data/lib/chef/windows/ChefNodeCmdlet/TestNextActionCmdlet/Program.cs +136 -0
- data/lib/chef/windows/ChefNodeCmdlet/TestNextActionCmdlet/Properties/AssemblyInfo.cs +36 -0
- data/lib/chef/windows/ChefNodeCmdlet/TestNextActionCmdlet/ReadMe.txt +46 -0
- data/lib/chef/windows/ChefNodeCmdlet/TestNextActionCmdlet/TestNextActionCmdlet.csproj +68 -0
- data/lib/chef/windows/bin/Newtonsoft.Json.dll +0 -0
- data/lib/chef/windows/chef_node_server.rb +463 -0
- data/lib/chef/windows/dynamic_powershell_provider.rb +296 -0
- data/lib/chef/windows/pipe_server.rb +283 -0
- data/lib/chef/windows/powershell_host.rb +285 -0
- data/lib/chef/windows/powershell_pipe_server.rb +136 -0
- data/lib/chef/windows/powershell_provider_base.rb +92 -0
- data/lib/chef/windows/scripts/run_loop.ps1 +105 -0
- data/lib/clouds/cloud.rb +557 -0
- data/lib/clouds/cloud_factory.rb +250 -0
- data/lib/clouds/cloud_utilities.rb +244 -0
- data/lib/clouds/clouds/azure.rb +106 -0
- data/lib/clouds/clouds/cloudstack.rb +114 -0
- data/lib/clouds/clouds/ec2.rb +113 -0
- data/lib/clouds/clouds/eucalyptus.rb +46 -0
- data/lib/clouds/clouds/google.rb +102 -0
- data/lib/clouds/clouds/none.rb +76 -0
- data/lib/clouds/clouds/openstack.rb +30 -0
- data/lib/clouds/clouds/rackspace-ng.rb +54 -0
- data/lib/clouds/clouds/rackspace.rb +78 -0
- data/lib/clouds/clouds/softlayer.rb +91 -0
- data/lib/clouds/metadata_formatter.rb +108 -0
- data/lib/clouds/metadata_provider.rb +128 -0
- data/lib/clouds/metadata_source.rb +87 -0
- data/lib/clouds/metadata_sources/certificate_metadata_source.rb +207 -0
- data/lib/clouds/metadata_sources/config_drive_metadata_source.rb +129 -0
- data/lib/clouds/metadata_sources/file_metadata_source.rb +74 -0
- data/lib/clouds/metadata_sources/http_metadata_source.rb +277 -0
- data/lib/clouds/metadata_sources/selective_metadata_source.rb +122 -0
- data/lib/clouds/metadata_tree_climber.rb +144 -0
- data/lib/clouds/metadata_writer.rb +155 -0
- data/lib/clouds/metadata_writers/dictionary_metadata_writer.rb +72 -0
- data/lib/clouds/metadata_writers/ruby_metadata_writer.rb +76 -0
- data/lib/clouds/metadata_writers/shell_metadata_writer.rb +121 -0
- data/lib/clouds/register_clouds.rb +34 -0
- data/lib/clouds.rb +32 -0
- data/lib/gem_dependencies.rb +83 -0
- data/lib/git_hooks/commit-msg.rb +7 -0
- data/lib/instance/agent_config.rb +168 -0
- data/lib/instance/agent_watcher.rb +233 -0
- data/lib/instance/audit_cook_stub.rb +104 -0
- data/lib/instance/audit_proxy.rb +247 -0
- data/lib/instance/bundle_queue.rb +104 -0
- data/lib/instance/cook/agent_connection.rb +109 -0
- data/lib/instance/cook/audit_logger.rb +165 -0
- data/lib/instance/cook/audit_stub.rb +142 -0
- data/lib/instance/cook/ca-bundle.crt +2794 -0
- data/lib/instance/cook/chef_state.rb +211 -0
- data/lib/instance/cook/cook.rb +306 -0
- data/lib/instance/cook/cook_state.rb +298 -0
- data/lib/instance/cook/cookbook_path_mapping.rb +66 -0
- data/lib/instance/cook/cookbook_repo_retriever.rb +190 -0
- data/lib/instance/cook/executable_sequence.rb +765 -0
- data/lib/instance/cook/external_parameter_gatherer.rb +190 -0
- data/lib/instance/cook/repose_downloader.rb +349 -0
- data/lib/instance/cook/shutdown_request_proxy.rb +121 -0
- data/lib/instance/cook.rb +41 -0
- data/lib/instance/downloader.rb +208 -0
- data/lib/instance/duplicable.rb +67 -0
- data/lib/instance/exceptions.rb +49 -0
- data/lib/instance/executable_sequence_proxy.rb +278 -0
- data/lib/instance/instance_commands.rb +577 -0
- data/lib/instance/instance_state.rb +633 -0
- data/lib/instance/json_utilities.rb +102 -0
- data/lib/instance/login_manager.rb +533 -0
- data/lib/instance/login_user_manager.rb +522 -0
- data/lib/instance/message_encoder.rb +118 -0
- data/lib/instance/multi_thread_bundle_queue.rb +232 -0
- data/lib/instance/operation_context.rb +60 -0
- data/lib/instance/options_bag.rb +65 -0
- data/lib/instance/payload_formatter.rb +46 -0
- data/lib/instance/policy.rb +53 -0
- data/lib/instance/policy_audit.rb +100 -0
- data/lib/instance/policy_manager.rb +146 -0
- data/lib/instance/reenroll_manager.rb +104 -0
- data/lib/instance/right_scripts_cookbook.rb +181 -0
- data/lib/instance/shutdown_request.rb +221 -0
- data/lib/instance/single_thread_bundle_queue.rb +189 -0
- data/lib/instance/volume_management.rb +450 -0
- data/lib/instance.rb +50 -0
- data/lib/repo_conf_generators/apt_conf_generators.rb +106 -0
- data/lib/repo_conf_generators/gem_conf_generators.rb +80 -0
- data/lib/repo_conf_generators/rightscale_conf_generators.rb +254 -0
- data/lib/repo_conf_generators/rightscale_key.pub +17 -0
- data/lib/repo_conf_generators/yum_conf_generators.rb +225 -0
- data/lib/repo_conf_generators.rb +30 -0
- data/lib/run_shell.rb +28 -0
- data/scripts/agent_checker.rb +571 -0
- data/scripts/agent_controller.rb +247 -0
- data/scripts/agent_deployer.rb +148 -0
- data/scripts/bundle_runner.rb +336 -0
- data/scripts/cloud_controller.rb +176 -0
- data/scripts/log_level_manager.rb +142 -0
- data/scripts/ohai_runner.rb +33 -0
- data/scripts/reenroller.rb +193 -0
- data/scripts/server_importer.rb +293 -0
- data/scripts/shutdown_client.rb +183 -0
- data/scripts/system_configurator.rb +367 -0
- data/scripts/tagger.rb +381 -0
- data/scripts/thunker.rb +356 -0
- metadata +418 -0
@@ -0,0 +1,45 @@
|
|
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 get-ChefNode response
|
32
|
+
public class GetChefNodeResponse : GetNodeValueResponseBase
|
33
|
+
{
|
34
|
+
public GetChefNodeResponse()
|
35
|
+
{
|
36
|
+
}
|
37
|
+
|
38
|
+
public GetChefNodeResponse(string[] path, object nodeValue)
|
39
|
+
: base(path, nodeValue)
|
40
|
+
{
|
41
|
+
}
|
42
|
+
}
|
43
|
+
}
|
44
|
+
}
|
45
|
+
}
|
@@ -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
|
+
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 Get-CurrentResource cmdlet.
|
38
|
+
[Cmdlet(VerbsCommon.Get, "CurrentResource")]
|
39
|
+
public class GetCurrentResourceCommand : GetNodeValueCommandBase
|
40
|
+
{
|
41
|
+
protected override GetNodeValueRequestBase CreateRequest()
|
42
|
+
{
|
43
|
+
return new GetCurrentResourceRequest(Path);
|
44
|
+
}
|
45
|
+
|
46
|
+
protected override ChefNodeCmdletExceptionBase CreateException(string message)
|
47
|
+
{
|
48
|
+
return new GetCurrentResourceException(message);
|
49
|
+
}
|
50
|
+
|
51
|
+
protected override ChefNodeCmdletExceptionBase CreateException(IDictionary responseHash)
|
52
|
+
{
|
53
|
+
return new GetCurrentResourceException(responseHash);
|
54
|
+
}
|
55
|
+
}
|
56
|
+
}
|
57
|
+
}
|
58
|
+
}
|
@@ -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 Get-CurrentResource request
|
33
|
+
public class GetCurrentResourceRequest : GetNodeValueRequestBase
|
34
|
+
{
|
35
|
+
public GetCurrentResourceRequest()
|
36
|
+
{
|
37
|
+
}
|
38
|
+
|
39
|
+
public GetCurrentResourceRequest(ICollection path)
|
40
|
+
: base(path)
|
41
|
+
{
|
42
|
+
}
|
43
|
+
}
|
44
|
+
}
|
45
|
+
}
|
46
|
+
}
|
@@ -0,0 +1,45 @@
|
|
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
|
+
// response for Get-CurrentResource protocol.
|
32
|
+
public class GetCurrentResourceResponse : GetNodeValueResponseBase
|
33
|
+
{
|
34
|
+
public GetCurrentResourceResponse()
|
35
|
+
{
|
36
|
+
}
|
37
|
+
|
38
|
+
public GetCurrentResourceResponse(string[] path, object nodeValue)
|
39
|
+
: base(path, nodeValue)
|
40
|
+
{
|
41
|
+
}
|
42
|
+
}
|
43
|
+
}
|
44
|
+
}
|
45
|
+
}
|
@@ -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
|
+
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 Get-NewResource cmdlet.
|
38
|
+
[Cmdlet(VerbsCommon.Get, "NewResource")]
|
39
|
+
public class GetNewResourceCommand : GetNodeValueCommandBase
|
40
|
+
{
|
41
|
+
protected override GetNodeValueRequestBase CreateRequest()
|
42
|
+
{
|
43
|
+
return new GetNewResourceRequest(Path);
|
44
|
+
}
|
45
|
+
|
46
|
+
protected override ChefNodeCmdletExceptionBase CreateException(string message)
|
47
|
+
{
|
48
|
+
return new GetNewResourceException(message);
|
49
|
+
}
|
50
|
+
|
51
|
+
protected override ChefNodeCmdletExceptionBase CreateException(IDictionary responseHash)
|
52
|
+
{
|
53
|
+
return new GetNewResourceException(responseHash);
|
54
|
+
}
|
55
|
+
}
|
56
|
+
}
|
57
|
+
}
|
58
|
+
}
|
@@ -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 Get-NewResource request
|
33
|
+
public class GetNewResourceRequest : GetNodeValueRequestBase
|
34
|
+
{
|
35
|
+
public GetNewResourceRequest()
|
36
|
+
{
|
37
|
+
}
|
38
|
+
|
39
|
+
public GetNewResourceRequest(ICollection path)
|
40
|
+
: base(path)
|
41
|
+
{
|
42
|
+
}
|
43
|
+
}
|
44
|
+
}
|
45
|
+
}
|
46
|
+
}
|
@@ -0,0 +1,45 @@
|
|
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
|
+
// response for Get-NewResource protocol.
|
32
|
+
public class GetNewResourceResponse : GetNodeValueResponseBase
|
33
|
+
{
|
34
|
+
public GetNewResourceResponse()
|
35
|
+
{
|
36
|
+
}
|
37
|
+
|
38
|
+
public GetNewResourceResponse(string[] path, object nodeValue)
|
39
|
+
: base(path, nodeValue)
|
40
|
+
{
|
41
|
+
}
|
42
|
+
}
|
43
|
+
}
|
44
|
+
}
|
45
|
+
}
|
@@ -0,0 +1,178 @@
|
|
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-NextAction cmdlet.
|
38
|
+
[Cmdlet(VerbsCommon.Get, "NextAction")]
|
39
|
+
public class GetNextActionCommand : Cmdlet
|
40
|
+
{
|
41
|
+
[Parameter(Position = 0, Mandatory = true)]
|
42
|
+
public string PipeName
|
43
|
+
{
|
44
|
+
get { return pipeName; }
|
45
|
+
set { pipeName = value; }
|
46
|
+
}
|
47
|
+
|
48
|
+
[Parameter(Position = 1, Mandatory = false)]
|
49
|
+
public int LastActionExitCode
|
50
|
+
{
|
51
|
+
get { return lastActionExitCode; }
|
52
|
+
set { lastActionExitCode = value; }
|
53
|
+
}
|
54
|
+
|
55
|
+
[Parameter(Position = 2, Mandatory = false)]
|
56
|
+
public string LastActionErrorMessage
|
57
|
+
{
|
58
|
+
get { return lastActionErrorMessage; }
|
59
|
+
set { lastActionErrorMessage = value; }
|
60
|
+
}
|
61
|
+
|
62
|
+
protected override void ProcessRecord()
|
63
|
+
{
|
64
|
+
// iterate attempting to connect, send and receive to Chef node server.
|
65
|
+
for (int tryIndex = 0; tryIndex < Constants.MAX_CLIENT_RETRIES; ++tryIndex)
|
66
|
+
{
|
67
|
+
ITransport transport = new JsonTransport();
|
68
|
+
PipeClient pipeClient = new PipeClient(PipeName, transport);
|
69
|
+
|
70
|
+
try
|
71
|
+
{
|
72
|
+
GetNextActionRequest request = new GetNextActionRequest(LastActionExitCode, LastActionErrorMessage);
|
73
|
+
|
74
|
+
pipeClient.Connect(Constants.NEXT_ACTION_CONNECT_TIMEOUT_MSECS);
|
75
|
+
|
76
|
+
IDictionary responseHash = (IDictionary)transport.NormalizeDeserializedObject(pipeClient.SendReceive<object>(request));
|
77
|
+
|
78
|
+
if (null == responseHash)
|
79
|
+
{
|
80
|
+
if (tryIndex + 1 < Constants.MAX_CLIENT_RETRIES)
|
81
|
+
{
|
82
|
+
// delay retry a few ticks to yield time in case server is busy.
|
83
|
+
Thread.Sleep(Constants.SLEEP_BETWEEN_CLIENT_RETRIES_MSECS);
|
84
|
+
continue;
|
85
|
+
}
|
86
|
+
else
|
87
|
+
{
|
88
|
+
string message = String.Format("Failed to get expected response after {0} retries.", Constants.MAX_CLIENT_RETRIES);
|
89
|
+
throw new GetNextActionException(message);
|
90
|
+
}
|
91
|
+
}
|
92
|
+
if (ChefNodeCmdletExceptionBase.HasError(responseHash))
|
93
|
+
{
|
94
|
+
throw new GetNextActionException(responseHash);
|
95
|
+
}
|
96
|
+
|
97
|
+
// next action cannot be null.
|
98
|
+
string nextAction = responseHash.Contains(Constants.JSON_NEXT_ACTION_KEY) ? responseHash[Constants.JSON_NEXT_ACTION_KEY].ToString() : null;
|
99
|
+
|
100
|
+
if (null == nextAction)
|
101
|
+
{
|
102
|
+
throw new GetNextActionException("Received null for next action; expecting an exit command when finished.");
|
103
|
+
}
|
104
|
+
|
105
|
+
// enhance next action with try-catch logic to set the $global:RS_LastErrorRecord variable
|
106
|
+
// in case of an exception thrown by a script. the try-catch block loses details of script
|
107
|
+
// execution if caught by an outer block instead of the inner block which threw it.
|
108
|
+
nextAction = NEXT_ACTION_PREFIX + nextAction + NEXT_ACTION_POSTFIX;
|
109
|
+
|
110
|
+
// automagically convert next action into an invocable script block.
|
111
|
+
//
|
112
|
+
// example of use:
|
113
|
+
//
|
114
|
+
// while ($TRUE)
|
115
|
+
// {
|
116
|
+
// $Error.clear()
|
117
|
+
// $nextAction = $NULL
|
118
|
+
// $nextAction = get-NextAction $pipeName
|
119
|
+
// if ($Error.Count -eq 0)
|
120
|
+
// {
|
121
|
+
// write-output $nextAction
|
122
|
+
// Invoke-Command -scriptblock $nextAction
|
123
|
+
// sleep 1
|
124
|
+
// }
|
125
|
+
// else
|
126
|
+
// {
|
127
|
+
// break
|
128
|
+
// }
|
129
|
+
// }
|
130
|
+
ScriptBlock scriptBlock = ScriptBlock.Create(nextAction);
|
131
|
+
|
132
|
+
WriteObject(scriptBlock);
|
133
|
+
|
134
|
+
// done.
|
135
|
+
break;
|
136
|
+
}
|
137
|
+
catch (TimeoutException e)
|
138
|
+
{
|
139
|
+
ThrowTerminatingError(new ErrorRecord(e, "Connection timed out", ErrorCategory.OperationTimeout, pipeClient));
|
140
|
+
}
|
141
|
+
catch (GetNextActionException e)
|
142
|
+
{
|
143
|
+
ThrowTerminatingError(new ErrorRecord(e, "get-NextAction exception", ErrorCategory.InvalidResult, pipeClient));
|
144
|
+
}
|
145
|
+
catch (Exception e)
|
146
|
+
{
|
147
|
+
ThrowTerminatingError(new ErrorRecord(e, "Unexpected exception", ErrorCategory.NotSpecified, pipeClient));
|
148
|
+
}
|
149
|
+
finally
|
150
|
+
{
|
151
|
+
pipeClient.Close();
|
152
|
+
pipeClient = null;
|
153
|
+
}
|
154
|
+
}
|
155
|
+
}
|
156
|
+
|
157
|
+
protected int lastActionExitCode; // The exit code of the last action that was run
|
158
|
+
protected string lastActionErrorMessage; // The text of the error that occurred running the last action
|
159
|
+
protected string pipeName; // Name of pipe to connect to passed from command line
|
160
|
+
|
161
|
+
private static string NEXT_ACTION_PREFIX =
|
162
|
+
@"try
|
163
|
+
{
|
164
|
+
";
|
165
|
+
private static string NEXT_ACTION_POSTFIX =
|
166
|
+
@"
|
167
|
+
}
|
168
|
+
catch
|
169
|
+
{
|
170
|
+
if ($NULL -eq $global:RS_lastErrorRecord)
|
171
|
+
{
|
172
|
+
$global:RS_lastErrorRecord = $_
|
173
|
+
}
|
174
|
+
}";
|
175
|
+
}
|
176
|
+
}
|
177
|
+
}
|
178
|
+
}
|
@@ -0,0 +1,67 @@
|
|
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 get-NextAction request
|
33
|
+
public class GetNextActionRequest
|
34
|
+
{
|
35
|
+
public int LastExitCode
|
36
|
+
{
|
37
|
+
get { return lastExitCode; }
|
38
|
+
set { lastExitCode = value; }
|
39
|
+
}
|
40
|
+
|
41
|
+
public string LastErrorMessage
|
42
|
+
{
|
43
|
+
get { return lastErrorMessage; }
|
44
|
+
set { lastErrorMessage = value; }
|
45
|
+
}
|
46
|
+
|
47
|
+
public GetNextActionRequest()
|
48
|
+
{
|
49
|
+
}
|
50
|
+
|
51
|
+
public GetNextActionRequest(int lastExitCode, string lastErrorMessage)
|
52
|
+
{
|
53
|
+
this.lastExitCode = lastExitCode;
|
54
|
+
this.lastErrorMessage = lastErrorMessage;
|
55
|
+
}
|
56
|
+
|
57
|
+
public override string ToString()
|
58
|
+
{
|
59
|
+
return String.Format("GetNextActionRequest: {{ LastExitCode = {0}, LastErrorMessage = \"{1}\" }}", lastExitCode, lastErrorMessage);
|
60
|
+
}
|
61
|
+
|
62
|
+
private int lastExitCode;
|
63
|
+
private string lastErrorMessage;
|
64
|
+
}
|
65
|
+
}
|
66
|
+
}
|
67
|
+
}
|
@@ -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 get-NextAction response
|
32
|
+
public class GetNextActionResponse
|
33
|
+
{
|
34
|
+
public string NextAction
|
35
|
+
{
|
36
|
+
get { return nextAction; }
|
37
|
+
set { nextAction = value; }
|
38
|
+
}
|
39
|
+
|
40
|
+
public GetNextActionResponse()
|
41
|
+
{
|
42
|
+
}
|
43
|
+
|
44
|
+
public GetNextActionResponse(string nextAction)
|
45
|
+
{
|
46
|
+
this.nextAction = nextAction;
|
47
|
+
}
|
48
|
+
|
49
|
+
public override string ToString()
|
50
|
+
{
|
51
|
+
return String.Format("GetNextActionResponse: {{ NextAction \"{0}\" }}", nextAction);
|
52
|
+
}
|
53
|
+
|
54
|
+
private string nextAction;
|
55
|
+
}
|
56
|
+
}
|
57
|
+
}
|
58
|
+
}
|