claudius 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/claudius.gemspec CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "claudius"
7
- spec.version = "0.0.2"
7
+ spec.version = "0.0.3"
8
8
  spec.authors = ["radk0s", "blost"]
9
9
  spec.email = ["rachamot@gmail.com"]
10
10
  spec.description = "Write a gem description"
@@ -18,7 +18,8 @@ Gem::Specification.new do |spec|
18
18
 
19
19
  spec.add_development_dependency "bundler", "~> 1.3"
20
20
  spec.add_development_dependency "rake"
21
- spec.add_runtime_dependency "fog"
22
- spec.add_runtime_dependency "net-ssh"
23
- spec.add_runtime_dependency "graph"
21
+ spec.add_runtime_dependency "fog", ">= 1.22.0"
22
+ spec.add_runtime_dependency "net-ssh", "2.9.1"
23
+ spec.add_runtime_dependency "graph", "2.7.0"
24
+ spec.add_runtime_dependency "awesome_print", "1.2.0"
24
25
  end
@@ -1,15 +1,15 @@
1
1
  require 'claudius'
2
2
  require "awesome_print"
3
3
 
4
- experiment_tree = experiment 'sdsdf' do
4
+ experiment_tree = experiment 'Test' do
5
5
  define_providers do
6
- # cloud('aws', :provider => config['provider'],
7
- # :region=>config['region'],
8
- # :aws_access_key_id => config['aws_access_key_id'],
9
- # :aws_secret_access_key => config['aws_secret_access_key'])
10
- # .create_instances(['t1.micro'], 'ubuntu', './Piotr-key-pair-irleand.pem',
11
- # :key_name => 'Piotr-key-pair-irleand',
12
- # :groups => 'Piotr-irleand')
6
+ cloud('aws', :provider => config['provider'],
7
+ :region=>config['region'],
8
+ :aws_access_key_id => config['aws_access_key_id'],
9
+ :aws_secret_access_key => config['aws_secret_access_key'])
10
+ .create_instances(['t1.micro'], 'ubuntu', './Piotr-key-pair-irleand.pem',
11
+ :key_name => 'Piotr-key-pair-irleand',
12
+ :groups => 'Piotr-irleand')
13
13
  manual('kali', '192.168.1.116', 'root', :password => 'toor', :port => 22)
14
14
  end
15
15
 
data/examples/ping.rb ADDED
@@ -0,0 +1,41 @@
1
+
2
+ # Ping
3
+ # ---------
4
+ # This example shows how to conduct simple experiment with ping command.
5
+ #
6
+
7
+ require 'claudius'
8
+ config = load_config('./user_config.json')
9
+ execution_tree = experiment 'Hello' do
10
+ define_providers do
11
+ cloud('aws', :provider => config['provider'],
12
+ :region =>config['region'],
13
+ :endpoint => 'https://ec2.eu-west-1.amazonaws.com/',
14
+ :aws_access_key_id => config['aws_access_key_id'],
15
+ :aws_secret_access_key => config['aws_secret_access_key'])
16
+ .create_instances(['t1.micro=>in1'],
17
+ :username => 'ubuntu',
18
+ :private_key_path =>'./Piotr-key-pair-irleand.pem',
19
+ :key_name => 'Piotr-key-pair-irleand',
20
+ :groups => ['Piotr-irleand'])
21
+ manual('kali', '172.16.0.109', 'root', :password => 'toor')
22
+ end
23
+ foreach ['kali', 'in1'] do |instance_name|
24
+ concurrent do
25
+ on 'localhost' do
26
+ execute do
27
+ ssh "ping #{getInstance(instance_name).host} -c 3"
28
+ end
29
+ end
30
+ on instance_name do
31
+ execute do
32
+ ssh "ping #{getInstance(instance_name).host} -c 3"
33
+ ssh "echo Hello World! > TestFile"
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+
40
+ ap execution_tree.run
41
+ execution_tree.export_tree('tree')
@@ -1,4 +1,3 @@
1
- require 'awesome_print'
2
1
  # Initiate experiment
3
2
  # ---------
4
3
  #
@@ -20,7 +19,7 @@ experiment 'Hello Experiment' do
20
19
  end
21
20
  end
22
21
 
23
- # execute tree and print result time
22
+ # execute tree and print result time using *awesome_print*
24
23
  ap execution_tree.run
25
24
  # export tree to tree.png and tree.dot
26
25
  execution_tree.export_tree('tree')
@@ -4,19 +4,19 @@
4
4
  # To conduct an experiment remotely, You should define set of machines, which you would like to use. Claudius allows you to define 2 types of hosts - ones which are going to be created in clouds environment, and others which are already established (and you have access to them). To define machine and to maintain connection with them you should provide required parameters. For your convenience, you may store all yours parameters in json file, and recall them as it is presented in example.
5
5
  #
6
6
  require 'claudius'
7
- # config = load_config('./user_config.json')
7
+ config = load_config('./user_config.json')
8
8
  experiment 'Hello' do
9
9
  define_providers do
10
- # cloud('aws', :provider => config['provider'],
11
- # :region =>config['region'],
12
- # :endpoint => 'https://ec2.eu-west-1.amazonaws.com/',
13
- # :aws_access_key_id => config['aws_access_key_id'],
14
- # :aws_secret_access_key => config['aws_secret_access_key'])
15
- # .create_instances(['t1.micro=>in1'],
16
- # :username => 'ubuntu',
17
- # :private_key_path =>'./Piotr-key-pair-irleand.pem',
18
- # :key_name => 'Piotr-key-pair-irleand',
19
- # :groups => ['Piotr-irleand'])
10
+ cloud('aws', :provider => config['provider'],
11
+ :region =>config['region'],
12
+ :endpoint => 'https://ec2.eu-west-1.amazonaws.com/',
13
+ :aws_access_key_id => config['aws_access_key_id'],
14
+ :aws_secret_access_key => config['aws_secret_access_key'])
15
+ .create_instances(['t1.micro=>in1'],
16
+ :username => 'ubuntu',
17
+ :private_key_path =>'./Piotr-key-pair-irleand.pem',
18
+ :key_name => 'Piotr-key-pair-irleand',
19
+ :groups => ['Piotr-irleand'])
20
20
  manual('kali', '172.16.0.109', 'root', :password => 'toor')
21
21
  end
22
22
  foreach ['kali', 'in1'] do |instance|
@@ -51,3 +51,11 @@ end
51
51
  def define_providers (&block)
52
52
  MachineManager.new &block
53
53
  end
54
+
55
+ def getInstance(name)
56
+ if ($virtual_machines.has_key?(name))
57
+ $virtual_machines[name]
58
+ else
59
+ raise "No machine #{name} specified"
60
+ end
61
+ end
@@ -32,7 +32,7 @@ class ExecutionNode < Node
32
32
  start = Time.now
33
33
  commands.each_with_index do |command, index|
34
34
  _start = Time.now
35
- if instance.nil?
35
+ if instance.nil? or instance == 'localhost'
36
36
  puts `#{command}`
37
37
  else
38
38
  $virtual_machines[instance].invoke [[command]]
@@ -52,4 +52,5 @@ experiment 'Montage' do
52
52
  end
53
53
  end
54
54
  end
55
-
55
+ #$root.run(0, nil)
56
+ #$root.print_tree
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: claudius
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2014-06-06 00:00:00.000000000 Z
13
+ date: 2014-06-07 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler
@@ -51,7 +51,7 @@ dependencies:
51
51
  requirements:
52
52
  - - ! '>='
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: 1.22.0
55
55
  type: :runtime
56
56
  prerelease: false
57
57
  version_requirements: !ruby/object:Gem::Requirement
@@ -59,39 +59,55 @@ dependencies:
59
59
  requirements:
60
60
  - - ! '>='
61
61
  - !ruby/object:Gem::Version
62
- version: '0'
62
+ version: 1.22.0
63
63
  - !ruby/object:Gem::Dependency
64
64
  name: net-ssh
65
65
  requirement: !ruby/object:Gem::Requirement
66
66
  none: false
67
67
  requirements:
68
- - - ! '>='
68
+ - - '='
69
69
  - !ruby/object:Gem::Version
70
- version: '0'
70
+ version: 2.9.1
71
71
  type: :runtime
72
72
  prerelease: false
73
73
  version_requirements: !ruby/object:Gem::Requirement
74
74
  none: false
75
75
  requirements:
76
- - - ! '>='
76
+ - - '='
77
77
  - !ruby/object:Gem::Version
78
- version: '0'
78
+ version: 2.9.1
79
79
  - !ruby/object:Gem::Dependency
80
80
  name: graph
81
81
  requirement: !ruby/object:Gem::Requirement
82
82
  none: false
83
83
  requirements:
84
- - - ! '>='
84
+ - - '='
85
85
  - !ruby/object:Gem::Version
86
- version: '0'
86
+ version: 2.7.0
87
87
  type: :runtime
88
88
  prerelease: false
89
89
  version_requirements: !ruby/object:Gem::Requirement
90
90
  none: false
91
91
  requirements:
92
- - - ! '>='
92
+ - - '='
93
93
  - !ruby/object:Gem::Version
94
- version: '0'
94
+ version: 2.7.0
95
+ - !ruby/object:Gem::Dependency
96
+ name: awesome_print
97
+ requirement: !ruby/object:Gem::Requirement
98
+ none: false
99
+ requirements:
100
+ - - '='
101
+ - !ruby/object:Gem::Version
102
+ version: 1.2.0
103
+ type: :runtime
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - '='
109
+ - !ruby/object:Gem::Version
110
+ version: 1.2.0
95
111
  description: Write a gem description
96
112
  email:
97
113
  - rachamot@gmail.com
@@ -107,6 +123,7 @@ files:
107
123
  - claudius.gemspec
108
124
  - examples/_
109
125
  - examples/on_instance.rb
126
+ - examples/ping.rb
110
127
  - examples/simple_program.rb
111
128
  - examples/specify_instances.rb
112
129
  - lib/remote_execution/cloud_provider.rb