cfcm 0.0.6 → 0.0.7
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/.travis.yml +5 -0
- data/Gemfile +9 -2
- data/Gemfile.lock +15 -42
- data/README.md +2 -0
- data/Rakefile +6 -1
- data/cfcm.gemspec +1 -1
- data/lib/cfcm/cf.rb +12 -19
- data/lib/cfcm/iaas/vsphere.rb +3 -3
- data/lib/cfcm/monkey.rb +1 -1
- data/lib/cfcm/version.rb +1 -1
- metadata +4 -4
data/.travis.yml
ADDED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,67 +1,40 @@
|
|
1
1
|
GEM
|
2
|
+
remote: https://rubygems.org/
|
2
3
|
specs:
|
3
|
-
addressable (2.2.6)
|
4
4
|
builder (3.0.0)
|
5
|
-
cfoundry (0.3.
|
5
|
+
cfoundry (0.3.36)
|
6
6
|
multi_json (~> 1.3.6)
|
7
7
|
rest-client (~> 1.6.1)
|
8
|
-
rubyzip (~> 0.9.
|
9
|
-
|
8
|
+
rubyzip (~> 0.9.9)
|
9
|
+
diff-lcs (1.1.3)
|
10
10
|
eventmachine (0.12.10)
|
11
|
-
interact (0.4.7)
|
12
|
-
json_pure (1.6.7)
|
13
|
-
manifests-vmc-plugin (0.4.3)
|
14
|
-
cfoundry (~> 0.3.9)
|
15
11
|
mime-types (1.19)
|
16
|
-
mothership (0.0.14)
|
17
12
|
multi_json (1.3.6)
|
18
13
|
nokogiri (1.5.5)
|
19
14
|
rake (0.9.2.2)
|
20
|
-
rb-readline (0.4.2)
|
21
15
|
rbvmomi (1.5.1)
|
22
16
|
builder
|
23
17
|
nokogiri (>= 1.4.1)
|
24
18
|
trollop
|
25
19
|
rest-client (1.6.7)
|
26
20
|
mime-types (>= 1.16)
|
27
|
-
rspec (
|
21
|
+
rspec (2.11.0)
|
22
|
+
rspec-core (~> 2.11.0)
|
23
|
+
rspec-expectations (~> 2.11.0)
|
24
|
+
rspec-mocks (~> 2.11.0)
|
25
|
+
rspec-core (2.11.1)
|
26
|
+
rspec-expectations (2.11.3)
|
27
|
+
diff-lcs (~> 1.1.3)
|
28
|
+
rspec-mocks (2.11.3)
|
28
29
|
rubyzip (0.9.9)
|
29
|
-
simplecov (0.6.4)
|
30
|
-
multi_json (~> 1.0)
|
31
|
-
simplecov-html (~> 0.5.3)
|
32
|
-
simplecov-html (0.5.3)
|
33
|
-
terminal-table (1.4.5)
|
34
30
|
trollop (2.0)
|
35
|
-
uuidtools (2.1.3)
|
36
|
-
vmc (0.4.0.beta.36)
|
37
|
-
addressable (~> 2.2.6)
|
38
|
-
cfoundry (~> 0.3.23)
|
39
|
-
interact (~> 0.4.0)
|
40
|
-
interact (~> 0.4.7)
|
41
|
-
json_pure (>= 1.5.1, < 1.7.0)
|
42
|
-
json_pure (~> 1.6.5)
|
43
|
-
manifests-vmc-plugin (~> 0.4.3)
|
44
|
-
mothership (~> 0.0.14)
|
45
|
-
multi_json (~> 1.3.6)
|
46
|
-
rake
|
47
|
-
rake
|
48
|
-
rb-readline (~> 0.4.2)
|
49
|
-
rest-client (>= 1.6.1, < 1.7.0)
|
50
|
-
rspec
|
51
|
-
rspec (~> 1.3.0)
|
52
|
-
rubyzip (~> 0.9.4)
|
53
|
-
simplecov
|
54
|
-
terminal-table (~> 1.4.2)
|
55
|
-
uuidtools (~> 2.1.0)
|
56
|
-
webmock (~> 1.5.0)
|
57
|
-
webmock (1.5.0)
|
58
|
-
addressable (>= 2.2.2)
|
59
|
-
crack (>= 0.1.7)
|
60
31
|
|
61
32
|
PLATFORMS
|
62
33
|
ruby
|
63
34
|
|
64
35
|
DEPENDENCIES
|
36
|
+
cfoundry (= 0.3.36)
|
65
37
|
eventmachine (= 0.12.10)
|
38
|
+
rake (= 0.9.2.2)
|
66
39
|
rbvmomi (= 1.5.1)
|
67
|
-
|
40
|
+
rspec (= 2.11.0)
|
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
#cloudfoundry-chaos-monkey
|
2
2
|
|
3
|
+
[](http://travis-ci.org/BrianMMcClain/cloudfoundry-chaos-monkey)
|
4
|
+
|
3
5
|
Chaos Monkey style service for Cloud Foundry
|
4
6
|
|
5
7
|
##Using Cloud Foundry Chaos Monkey
|
data/Rakefile
CHANGED
data/cfcm.gemspec
CHANGED
data/lib/cfcm/cf.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
|
-
require '
|
1
|
+
require 'cfoundry'
|
2
2
|
|
3
3
|
module CFCM
|
4
4
|
module CF
|
5
5
|
class Session
|
6
6
|
def initialize(target, username, password)
|
7
7
|
begin
|
8
|
-
@client =
|
9
|
-
@client.login(username, password)
|
8
|
+
@client = CFoundry::V1::Client.new(target)
|
9
|
+
@client.login({:username => username, :password => password})
|
10
10
|
rescue
|
11
11
|
#puts "Could not login!"
|
12
12
|
#TODO: Handle error
|
@@ -15,7 +15,7 @@ module CFCM
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def is_logged_in
|
18
|
-
return @client.
|
18
|
+
return @client.logged_in?
|
19
19
|
end
|
20
20
|
|
21
21
|
def get_app(app_name)
|
@@ -25,14 +25,7 @@ module CFCM
|
|
25
25
|
return
|
26
26
|
end
|
27
27
|
|
28
|
-
@client.
|
29
|
-
if app[:name] == app_name
|
30
|
-
return app
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
#puts "Application Not Found"
|
35
|
-
#TODO: Handle error
|
28
|
+
return @client.app_by_name(app_name)
|
36
29
|
return nil
|
37
30
|
end
|
38
31
|
|
@@ -61,22 +54,22 @@ module CFCM
|
|
61
54
|
|
62
55
|
remaining_memory = self.remaining_memory
|
63
56
|
app = self.get_app(app_name)
|
64
|
-
app_memory = app
|
57
|
+
app_memory = app.memory
|
65
58
|
|
66
59
|
max_new_instances = (remaining_memory / app_memory).floor
|
67
60
|
return max_new_instances
|
68
61
|
end
|
69
62
|
|
70
63
|
def add_instance(app)
|
71
|
-
app
|
72
|
-
|
73
|
-
return app
|
64
|
+
app.total_instances += 1
|
65
|
+
app.update!
|
66
|
+
return self.get_app(app.name)
|
74
67
|
end
|
75
68
|
|
76
69
|
def remove_instance(app)
|
77
|
-
app
|
78
|
-
|
79
|
-
return app
|
70
|
+
app.total_instances -= 1
|
71
|
+
app.update!
|
72
|
+
return self.get_app(app.name)
|
80
73
|
end
|
81
74
|
|
82
75
|
end
|
data/lib/cfcm/iaas/vsphere.rb
CHANGED
@@ -14,9 +14,9 @@ module CFCM
|
|
14
14
|
def power_off_vm(vm_name)
|
15
15
|
opts = {:host=>@host, :user=>@user, :password=>@password, :insecure=>true}
|
16
16
|
vim = RbVmomi::VIM.connect opts
|
17
|
-
dc = vim.serviceInstance.content.rootFolder.traverse(config["datacenter"], RbVmomi::VIM::Datacenter) or abort "datacenter not found"
|
18
|
-
vm = dc.vmFolder.traverse(vm_name, VIM::VirtualMachine) or abort "VM not found"
|
19
|
-
vm.PowerOffVM_Task.wait_for_completion
|
17
|
+
dc = vim.serviceInstance.content.rootFolder.traverse(@config["datacenter"], RbVmomi::VIM::Datacenter) or abort "datacenter not found"
|
18
|
+
vm = dc.vmFolder.traverse(vm_name, RbVmomi::VIM::VirtualMachine) or abort "VM not found"
|
19
|
+
vm.PowerOffVM_Task.wait_for_completion
|
20
20
|
end
|
21
21
|
|
22
22
|
end
|
data/lib/cfcm/monkey.rb
CHANGED
@@ -22,7 +22,7 @@ module CFCM
|
|
22
22
|
# Determine if we should unleash the monkey
|
23
23
|
if (Random.rand(100) + 1) <= @probability
|
24
24
|
@app = @session.get_app(@app_name)
|
25
|
-
instances = @app
|
25
|
+
instances = @app.total_instances
|
26
26
|
max_growth = @session.max_instance_growth(@app_name)
|
27
27
|
|
28
28
|
if instances > @max_instances
|
data/lib/cfcm/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cfcm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-10-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: thor
|
@@ -28,7 +28,7 @@ dependencies:
|
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: '0'
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
|
-
name:
|
31
|
+
name: cfoundry
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
33
33
|
none: false
|
34
34
|
requirements:
|
@@ -52,6 +52,7 @@ extensions: []
|
|
52
52
|
extra_rdoc_files: []
|
53
53
|
files:
|
54
54
|
- .gitignore
|
55
|
+
- .travis.yml
|
55
56
|
- Gemfile
|
56
57
|
- Gemfile.lock
|
57
58
|
- README.md
|
@@ -89,4 +90,3 @@ signing_key:
|
|
89
90
|
specification_version: 3
|
90
91
|
summary: ''
|
91
92
|
test_files: []
|
92
|
-
has_rdoc:
|