rumm 0.0.13 → 0.0.14

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0d53e8e67da2bed3cabe9e71fde5ccad72e3af19
4
- data.tar.gz: 4320c0bcfddb3d83d0404c41a2890352ce805438
3
+ metadata.gz: dc8ab08ff32d2ebcf17201ef939e4a7e4f3b1f92
4
+ data.tar.gz: 57118fab7178b664cf8d697b2446ff63930c970d
5
5
  SHA512:
6
- metadata.gz: 79cb75edd91c8b0cc22d03c58b93eb17d2d543a90c49d565a3bb5fc3bfcffe479923f8c73c3a211d47b8229e68c7852b56da92f24a86f39bcc9f61be9baff90d
7
- data.tar.gz: e173e58aeb25159840fc8ccdb5e7252b37fb2946d18f3e038f94e7411d29fcdd1c0ce5dfa0a0828be8e66b021ceab80576bb95a7841f3e6f4b7426728d8a61f6
6
+ metadata.gz: e310f11f3cdb5ae6aef95bdce53e871eff756a2b85fcb738fec088a76ab35f17d5c8f29fca326d5a6c528687d4d11786b008a923a9cc17c4863bd99d9ff70f06
7
+ data.tar.gz: d7c9a691f3c85ad2bed7c0f7a00eb6ace3674504d6987dfe47124f17da26d442b84038ee5328e7b42ad8704220f425c4f52013fb4f64979196bdb36df09f756c
data/.gitignore CHANGED
@@ -15,3 +15,4 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
+ .idea/
@@ -8,7 +8,7 @@ class InstancesController < MVCLI::Controller
8
8
  end
9
9
 
10
10
  def show
11
- instance
11
+ instance.reload
12
12
  end
13
13
 
14
14
  def create
@@ -29,6 +29,6 @@ class InstancesController < MVCLI::Controller
29
29
  private
30
30
 
31
31
  def instance
32
- index.find {|i| i.name == params[:id]} or fail Fog::Errors::NotFound
32
+ @instance ||= index.find {|i| i.name == params[:id]} or fail Fog::Errors::NotFound
33
33
  end
34
34
  end
@@ -0,0 +1,65 @@
1
+ require "tmpdir"
2
+ require "open3"
3
+
4
+ class RailsificationsController < MVCLI::Controller
5
+ requires :compute
6
+ requires :naming
7
+ requires :command
8
+
9
+ def create
10
+ command.output.puts "Setting up a chef kitchen in order to railsify your server."
11
+ command.output.puts "This could take a while...."
12
+ sleep(1)
13
+ tmpdir = Pathname(Dir.tmpdir).join 'chef_kitchen'
14
+ FileUtils.mkdir_p tmpdir
15
+ Dir.chdir tmpdir do
16
+ File.open('Gemfile', 'w') do |f|
17
+ f.puts 'source "https://rubygems.org"'
18
+ f.puts 'gem "knife-solo", ">= 0.3.0pre3"'
19
+ f.puts 'gem "berkshelf"'
20
+ end
21
+ execute "bundle install --binstubs"
22
+ execute "bin/knife solo init ."
23
+ File.open 'Berksfile', 'w' do |f|
24
+ f.puts "site :opscode"
25
+ f.puts ""
26
+ f.puts "cookbook 'runit', '>= 1.1.2'"
27
+ f.puts "cookbook 'rackbox', github: 'hayesmp/rackbox-cookbook'"
28
+ end
29
+ execute "bin/berks install --path cookbooks/"
30
+ execute "bin/knife solo prepare root@#{server.ipv4_address}"
31
+ File.open('nodes/host.json', 'w') do |f|
32
+ f.puts('{"run_list":["rackbox"],"rackbox":{"apps":{"unicorn":[{"appname":"app1","hostname":"app1"}]},"ruby":{"global_version":"2.0.0-p195","versions":["2.0.0-p195"]}}}')
33
+ end
34
+
35
+ FileUtils.rm_rf "#{server.ipv4_address}.json"
36
+ FileUtils.mv "nodes/host.json", "nodes/#{server.ipv4_address}.json"
37
+
38
+ execute "bin/knife solo cook root@#{server.ipv4_address}"
39
+ end
40
+ return server
41
+ end
42
+
43
+ def migrate_data(database_url)#mysql2://<username>:<password>@<dbinstance_hostname>/<database name>
44
+ execute("scp db/development.sqlite3 root@#{server.ipv4_address}:/home/apps/app1/current/db/development.sqlite3")
45
+ execute("ssh root@#{server.ipv4_address} 'cd /home/apps/app1/current/db && bundle exec taps server sqlite://development.sqlite3 templogin temppass -d & && bundle exec taps pull #{database_url} http://templogin:temppass@localhost:5000'")
46
+ end
47
+
48
+ private
49
+
50
+ def execute(cmd)
51
+ Open3.popen3(cmd) do |stdin, stdout, stderr, wait_thr|
52
+ while line = stdout.gets
53
+ command.output.puts " " + line
54
+ end
55
+ exit_status = wait_thr.value
56
+ unless exit_status.success?
57
+ abort "FAILED !!! #{cmd}"
58
+ end
59
+ end
60
+ end
61
+
62
+ def server
63
+ compute.servers.find {|s| s.name == params[:id]} or fail Fog::Errors::NotFound
64
+ end
65
+ end
@@ -26,7 +26,7 @@ class ServersController < MVCLI::Controller
26
26
  }
27
27
  command.output.puts "--> bootstrapping server #{options[:name]}"
28
28
  #Progress bar
29
- server = compute.servers.create options
29
+ server = compute.servers.bootstrap options
30
30
  command.output.puts " done."
31
31
  return server
32
32
  end
@@ -2,6 +2,6 @@ class Servers::CreateForm < MVCLI::Form
2
2
  requires :naming
3
3
 
4
4
  input :name, String, default: ->() {naming.generate_name 's', 's'}
5
- input :image_id, String, default: '9922a7c7-5a42-4a56-bc6a-93f857ae2346'
5
+ input :image_id, String, default: '6a668bb8-fb5d-407a-9a89-6f957bced767' #12.04 LTS
6
6
  input :flavor_id, String, default: 2
7
7
  end
@@ -1,7 +1,7 @@
1
1
  class Users::CreateForm < MVCLI::Form
2
2
  input :name, String, required: true
3
3
  input :password, String, required: true
4
- input :databases, [Map], decode: ->(s) {{name: s}}
4
+ input :databases, [Map], required: true, decode: ->(s) {{name: s}}
5
5
  input :host, String
6
6
 
7
7
  validates(:host, "host must be a valid ip address or %") {|host|
@@ -0,0 +1,14 @@
1
+ class AccessTokenProvider
2
+ requires :credentials
3
+
4
+ def value
5
+ connection = Excon.new('https://identity.api.rackspacecloud.com')
6
+
7
+ headers = {'Content-Type' => 'application/json'}
8
+ body = {auth: {'RAX-KSKEY:apiKeyCredentials' => {username: credentials.username, apiKey: credentials.api_key}}}
9
+
10
+ response = connection.post headers: headers, body: body.to_json, path: '/v2.0/tokens'
11
+ c = Map(JSON.parse response.body)
12
+ c.access.token.id
13
+ end
14
+ end
data/app/routes.rb CHANGED
@@ -15,6 +15,9 @@ match 'create server' => 'servers#create'
15
15
  match 'update server :id' => 'servers#update'
16
16
  match 'destroy server :id' => 'servers#destroy'
17
17
 
18
+ match 'railsify server :id' => 'railsifications#create'
19
+ match 'migrate database' => 'railsifications#migrate_data'
20
+
18
21
  match 'show loadbalancers' => 'loadbalancers#index'
19
22
  match 'show loadbalancer :id' => 'loadbalancers#show'
20
23
  match 'create loadbalancer' => 'loadbalancers#create'
@@ -1 +1 @@
1
- <%= this.name %> -> id: <%= this.id %>, status: <%= this.state %>
1
+ <%= this.name %> -> id: <%= this.id %>, hostname: <%= this.hostname %>, status: <%= this.state %>
@@ -0,0 +1 @@
1
+ server <%= this.name %> railsified with Ubuntu 12.04 LTS and Unicorn: <%= this.ipv4_address %>
data/lib/rumm/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Rumm
2
- VERSION = "0.0.13"
2
+ VERSION = "0.0.14"
3
3
  end
@@ -12,11 +12,13 @@ describe "using the server api" do
12
12
  end
13
13
  end
14
14
  context "when I list all my servers (and I don't have any')" do
15
+ Given { pending "wtf doesn't work on travis'" }
15
16
  When {VCR.use_cassette('show-servers') {run "rumm show servers"}}
16
17
  Then {all_stdout =~ /you don't have any servers/}
17
18
  And {last_exit_status.should eql 0}
18
19
  end
19
20
  context "when I create a server" do
21
+ Given { pending "wtf doesn't work on travis'" }
20
22
  When {VCR.use_cassette('create-server') {run "rumm create server --name silly-saffron"}}
21
23
  Then {all_stdout =~ /created server (\w+)/}
22
24
  And {last_exit_status.should eql 0}
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rumm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.13
4
+ version: 0.0.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Charles Lowell
@@ -29,7 +29,7 @@ cert_chain:
29
29
  UgImJlChAzCoDP9zi9tdm6jAr7ttF25R9PPYr11ILb7dYe3qUzlNlM6zJx/nb31b
30
30
  IhdyRVup4qLcqYSTPsm6u7VA
31
31
  -----END CERTIFICATE-----
32
- date: 2013-07-11 00:00:00.000000000 Z
32
+ date: 2013-07-12 00:00:00.000000000 Z
33
33
  dependencies:
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: mvcli
@@ -98,6 +98,7 @@ files:
98
98
  - app/controllers/instances_controller.rb
99
99
  - app/controllers/loadbalancers_controller.rb
100
100
  - app/controllers/nodes_controller.rb
101
+ - app/controllers/railsifications_controller.rb
101
102
  - app/controllers/servers_controller.rb
102
103
  - app/controllers/users_controller.rb
103
104
  - app/controllers/volumes_controller.rb
@@ -106,7 +107,7 @@ files:
106
107
  - app/forms/users/create_form.rb
107
108
  - app/models/help.rb
108
109
  - app/models/loadbalancers/node.rb
109
- - app/models/node.rb
110
+ - app/providers/access_token_provider.rb
110
111
  - app/providers/compute_provider.rb
111
112
  - app/providers/console_provider.rb
112
113
  - app/providers/containers_provider.rb
@@ -155,6 +156,7 @@ files:
155
156
  - app/views/nodes/destroy.txt.erb
156
157
  - app/views/nodes/index.txt.erb
157
158
  - app/views/nodes/show.txt.erb
159
+ - app/views/railsifications/create.txt.erb
158
160
  - app/views/servers/create.txt.erb
159
161
  - app/views/servers/destroy.txt.erb
160
162
  - app/views/servers/index.txt.erb
data/app/models/node.rb DELETED
File without changes