vagrant-g5k 0.9.4 → 0.9.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -41,17 +41,23 @@ module VagrantPlugins
41
41
 
42
42
 
43
43
  # G5K network options
44
- #
44
+ #
45
45
  #
46
46
  # @return [Hash]
47
47
  attr_accessor :net
48
48
 
49
49
  # OAR resource selection
50
- #
50
+ #
51
51
  #
52
52
  # @return [String]
53
53
  attr_accessor :oar
54
54
 
55
+ # OAR job container id
56
+ #
57
+ #
58
+ # @return [String]
59
+ attr_accessor :job_container_id
60
+
55
61
  # VM resource demand
56
62
  #
57
63
  #
@@ -63,13 +69,14 @@ module VagrantPlugins
63
69
  @project_id = nil
64
70
  @site = nil
65
71
  @gateway = nil
66
- @walltime = "01:00:00"
67
- @oar = ""
72
+ @walltime = '01:00:00'
73
+ @oar = ''
68
74
  @net = {
69
75
  :type => 'nat'
70
76
  }
71
77
  @resources = {
72
78
  }
79
+ @job_container_id = nil
73
80
  end
74
81
 
75
82
  def finalize!()
@@ -91,7 +98,6 @@ module VagrantPlugins
91
98
  errors << "g5k image must be a Hash" if !@image.is_a?(Hash)
92
99
  errors << "g5k net must be a Hash" if !@net.is_a?(Hash)
93
100
  errors << "g5k resources must be a Hash" if !@resources.is_a?(Hash)
94
-
95
101
  { "G5K Provider" => errors }
96
102
  end
97
103
 
@@ -23,13 +23,14 @@ module VagrantPlugins
23
23
  @logger = Log4r::Logger.new("vagrant::g5k_connection")
24
24
  @ui = env[:ui]
25
25
 
26
- @provider_config = env[:machine].provider_config
26
+ @provider_config = env[:machine].provider_config
27
27
  @site = @provider_config.site
28
28
  @walltime = @provider_config.walltime
29
29
  @image= @provider_config.image
30
30
  @oar = "{#{@provider_config.oar}}/" if @provider_config.oar != ""
31
31
  @resources = @provider_config.resources
32
32
  @oar_unit = init_oar_unit(@resources[:cpu], @resources[:mem])
33
+ @job_container_id = @provider_config.job_container_id
33
34
  @cwd = cwd
34
35
  @driver = driver
35
36
  @oar_driver = oar_driver
@@ -95,19 +96,15 @@ module VagrantPlugins
95
96
  # NOTE: net is first due the the shape of the bridge launcher script
96
97
  net = @net_driver.generate_net()
97
98
  drive = _generate_drive(env)
98
-
99
99
  args = [@resources[:cpu], @resources[:mem], net, drive].join(" ")
100
100
  # Submitting a new job
101
101
  # Getting the job_id as a ruby string
102
102
  options = []
103
-
104
- if @oar_unit =~ /core/
105
- # allow classic ssh only work when the node is reserved as a whole
106
- # this implies that nat networking won't work when core is the unit of
107
- # deployment
108
- options << '-t allow_classic_ssh'
103
+ if !@job_container_id.nil?
104
+ @ui.info("Using a job container = #{@job_container_id}")
105
+ options << "-t inner=#{@job_container_id}"
109
106
  end
110
- options = [
107
+ options += [
111
108
  "-l \"#{@oar}#{@oar_unit}, walltime=#{@walltime}\"",
112
109
  "--name #{env[:machine].name}",
113
110
  "--checkpoint 60",
@@ -118,7 +115,7 @@ module VagrantPlugins
118
115
  env[:machine].id = job_id
119
116
  wait_for_vm(job_id)
120
117
  end
121
-
118
+
122
119
  def wait_for_vm(job_id)
123
120
  @oar_driver.wait_for(job_id)
124
121
  @net_driver.attach()
@@ -5,7 +5,7 @@ module VagrantPlugins
5
5
  module Network
6
6
 
7
7
  class Bridge
8
-
8
+
9
9
  include VagrantPlugins::G5K
10
10
 
11
11
  def initialize(env, driver, oar_driver)
@@ -21,7 +21,7 @@ module VagrantPlugins
21
21
  def generate_net()
22
22
  lockable(:lock => VagrantPlugins::G5K.subnet_lock) do
23
23
  subnet_job_id = _find_subnet
24
- if subnet_job_id.nil?
24
+ if subnet_job_id.nil?
25
25
  subnet_job_id = _create_subnet
26
26
  @oar_driver.wait_for(subnet_job_id)
27
27
  # we can't call this inside the launcher script
@@ -33,7 +33,7 @@ module VagrantPlugins
33
33
  return "BRIDGE #{_subnet_file}"
34
34
  end
35
35
  end
36
-
36
+
37
37
  def check_state(job_id)
38
38
  subnet_job_id = _find_subnet()
39
39
  return :subnet_missing if subnet_job_id.nil?
@@ -69,7 +69,7 @@ module VagrantPlugins
69
69
  def _create_subnet()
70
70
  options = []
71
71
  options << "--name '#{@project_id}-net'"
72
- options << "-l 'slash_22=1, walltime=#{@walltime}'"
72
+ options << "-l 'slash_18=1, walltime=#{@walltime}'"
73
73
  @oar_driver.submit_job('sleep 84400', options )
74
74
  end
75
75
 
@@ -87,10 +87,10 @@ module VagrantPlugins
87
87
  nil
88
88
  end
89
89
 
90
- # Update the subnet use
90
+ # Update the subnet use
91
91
  # op is a string "+" or "-"
92
- # if after the update the subnet use is 0
93
- # the subnet in use is also deleted
92
+ # if after the update the subnet use is 0
93
+ # the subnet in use is also deleted
94
94
  def _update_subnet_use(op)
95
95
  cmd = []
96
96
  cmd << "c=$(cat #{_subnet_count});"
@@ -98,7 +98,7 @@ module VagrantPlugins
98
98
  cmd << "cat #{_subnet_count}"
99
99
  count = @driver.exec(cmd.join(" "))
100
100
  @logger.info("subnet_count = #{count}")
101
- if count.to_i <= 0
101
+ if count.to_i <= 0
102
102
  @logger.info("deleteting the associated subnet")
103
103
  subnet_id = _find_subnet()
104
104
  @oar_driver.delete_job(subnet_id)
@@ -111,5 +111,3 @@ module VagrantPlugins
111
111
  end
112
112
  end
113
113
  end
114
-
115
-
@@ -3,7 +3,7 @@ require 'log4r'
3
3
  module VagrantPlugins
4
4
  module G5K
5
5
  class Oar
6
-
6
+
7
7
  include Vagrant::Util::Retryable
8
8
 
9
9
  attr_accessor :driver
@@ -13,7 +13,7 @@ module VagrantPlugins
13
13
  @driver = driver
14
14
  @ui = ui
15
15
  end
16
-
16
+
17
17
  def submit_job(cmd, options)
18
18
  # prefix by the oarsub command
19
19
  opt = _build_oar_cmd(options)
@@ -26,7 +26,7 @@ module VagrantPlugins
26
26
  def delete_job(job_id, options = [])
27
27
  cmd = _build_oar_cmd(options)
28
28
  cmd = ["oardel", cmd, job_id].join(" ")
29
- @driver.exec(cmd)
29
+ @driver.exec(cmd)
30
30
  end
31
31
 
32
32
  def check_job(job_id)
@@ -49,7 +49,7 @@ module VagrantPlugins
49
49
  end
50
50
  nil
51
51
  end
52
-
52
+
53
53
  def wait_for(job_id)
54
54
  job = nil
55
55
  begin
@@ -60,7 +60,7 @@ module VagrantPlugins
60
60
  end
61
61
  if job.nil? or (!job.nil? and job["state"] != "Running")
62
62
  @ui.info("Waiting for the job to be running")
63
- raise VagrantPlugins::G5K::Errors::JobNotRunning
63
+ raise VagrantPlugins::G5K::Errors::JobNotRunning
64
64
  end
65
65
  break
66
66
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  # This script is originally borrowed to pmorillo
4
4
  # Thanks to him !
5
- # I've made some addition though :)
5
+ # I've made some addition though :)
6
6
 
7
7
  # ARGS
8
8
  # $1: cpu demand
@@ -17,7 +17,7 @@ set -x
17
17
  function net_bridge() {
18
18
  SUBNET_FILE=$1
19
19
  # As we chose a stateless designe,let's calculate here the ip and mac
20
- # assuming we got a slash_22
20
+ # assuming we got at least a slash_22
21
21
  ipnumber=$(($OAR_JOB_ID % 1022))
22
22
  IP_MAC=$(cat $SUBNET_FILE|head -n $((ipnumber + 1))|tail -n 1)
23
23
  IP_ADDR=$(echo $IP_MAC|awk '{print $1}')
@@ -1,5 +1,5 @@
1
1
  module VagrantPlugins
2
2
  module G5K
3
- VERSION = '0.9.4'
3
+ VERSION = '0.9.5'
4
4
  end
5
5
  end
data/test/Vagrantfile ADDED
@@ -0,0 +1,46 @@
1
+ # -*- mode: ruby -*-
2
+ # vi: set ft=ruby :
3
+ #
4
+ # Sample Vagrantfile
5
+ #
6
+ Vagrant.configure(2) do |config|
7
+
8
+ config.vm.provider "g5k" do |g5k, override|
9
+ override.nfs.functional = false
10
+ g5k.project_id = "test-vagrant-g5k"
11
+ g5k.site = "rennes"
12
+ g5k.username = "msimonin"
13
+ g5k.gateway = "access.grid5000.fr"
14
+ g5k.walltime = "00:10:00"
15
+ g5k.image = {
16
+ :path => "/home/msimonin/public/ubuntu1404-9p.qcow2",
17
+ :backing => "snapshot"
18
+ }
19
+ g5k.net = {
20
+ :type => "bridge",
21
+ # :ports => ["#{2222+i}-:22"]
22
+ }
23
+ g5k.oar = "virtual != 'none'"
24
+ g5k.resources = {
25
+ :cpu => 1,
26
+ :mem => 2048
27
+ }
28
+ end #g5k
29
+
30
+ ## This define a VM.
31
+ ## a g5k provider section will override top level options
32
+ ## To define multiple VMs you can
33
+ ## * either repeat the block
34
+ ## * loop over using (1..N).each block
35
+ (1..10).each do |i|
36
+ config.vm.define "test-#{i}" do |my|
37
+ my.vm.box = "dummy"
38
+ ## Configure the shared folders between your host and the VM
39
+ my.vm.synced_folder ".", "/vagrant", type: "rsync", disabled: false
40
+ ## This is mandatory until #6 is fixed
41
+ ## In particular this is needed for the shared folders
42
+ my.ssh.insert_key = false
43
+ end #vm
44
+ end
45
+
46
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-g5k
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.4
4
+ version: 0.9.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthieu Simonin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-04-06 00:00:00.000000000 Z
11
+ date: 2017-06-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: iniparse
@@ -149,6 +149,17 @@ files:
149
149
  - Vagrantfile.multi
150
150
  - Vagrantfile.old
151
151
  - dummy.box
152
+ - examples/gitlab/Vagrantfile
153
+ - examples/gitlab/main.yml
154
+ - examples/htb-netem/README.md
155
+ - examples/htb-netem/Vagrantfile
156
+ - examples/htb-netem/ansible.cfg
157
+ - examples/htb-netem/example_latencies.png
158
+ - examples/htb-netem/heat.py
159
+ - examples/htb-netem/hosts.j2
160
+ - examples/htb-netem/setup.rb
161
+ - examples/htb-netem/setup.yml
162
+ - examples/htb-netem/test.yml
152
163
  - lib/vagrant-g5k.rb
153
164
  - lib/vagrant-g5k/.action.rb.swp
154
165
  - lib/vagrant-g5k/.config.rb.swp
@@ -183,6 +194,7 @@ files:
183
194
  - locales/en.yml
184
195
  - spec/vagrant-g5k/config_spec.rb
185
196
  - spec/vagrant-g5k/oar_spec.rb
197
+ - test/Vagrantfile
186
198
  - vagrant-g5k.gemspec
187
199
  homepage: https://github.com/msimonin/vagrant-g5k
188
200
  licenses: