Class: VagrantPlugins::GANETI::Action::RunInstance
- Inherits:
-
Object
- Object
- VagrantPlugins::GANETI::Action::RunInstance
- Defined in:
- lib/vagrant-ganeti/action/run_instance.rb
Overview
“unlink” vagrant and the managed server
Instance Method Summary collapse
- #call(env) ⇒ Object
-
#initialize(app, env) ⇒ RunInstance
constructor
A new instance of RunInstance.
Constructor Details
#initialize(app, env) ⇒ RunInstance
Returns a new instance of RunInstance.
9 10 11 12 |
# File 'lib/vagrant-ganeti/action/run_instance.rb', line 9 def initialize(app, env) @app = app @logger = Log4r::Logger.new("vagrant_ganeti::action::remove_instance") end |
Instance Method Details
#call(env) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/vagrant-ganeti/action/run_instance.rb', line 14 def call(env) config = env[:machine].provider_config.get_config() client = env[:ganeti_compute] # Launch! env[:ui].info(I18n.t("vagrant_ganeti.launching_instance")) env[:ui].info(" -- Rapi User: #{config.rapi_user}") env[:ui].info(" -- OS Type: #{config.os_type}") env[:ui].info(" -- Instance NAME: #{config.instance_name}") env[:ui].info(" -- Cluster: #{config.cluster}") env[:ui].info(" -- Primary Node #{config.pnode}") if not config.pnode.nil? env[:ui].info(" -- Disk Template: #{config.disk_template}") env[:ui].info(" -- Disks #{config.disks}") env[:ui].info(" -- Network Configurations: #{config.nics}") env[:ui].info(" -- Memory : #{config.memory }") if not config.memory.nil? env[:ui].info(" -- VCPUs : #{config.vcpus }") if not config.vcpus.nil? env[:ui].info(" -- Iallocator Policy : #{config.iallocator }") if not config.iallocator == "__DEFAULT__" env[:ui].info(" -- Version : #{config.version }") if config.version env[:ui].info(" -- ip_check : #{config.ip_check }") if not config.ip_check.nil? env[:ui].info(" -- name_check : #{config.name_check }") if not config.name_check.nil? createjob = client.instance_create() env[:ui].info( "New Job Created #{createjob}.") env[:ui].info( "Preparing to Create Instance") env[:ui].info( "This might take few minutes.....") puts env[:ganeti_compute] while true status = client.is_job_ready(createjob) if status == "error" env[:ui].info("Error Creating instance") break elsif status == "running" #Waiting for the message to succeed sleep(15) elsif status == "success" env[:ui].info( "Instance sucessfully Created.") env[:ui].info( "Booting up the Instance.") bootinstancejob = client.start_instance() sleep(3) if client.is_job_ready(bootinstancejob) == "success" env[:machine].id = client.info['instance_name'] env[:ui].info( "#{ env[:machine].id}") env[:ui].info("Instance Started Successfully") else env[:ui].info("Error Staring Instance") end break elsif status == "already_exists" env[:ui].info( "Instance already Exists. Use Vagrant SSH to login .\nUse 'vagrant destroy' and 'vagrant up' again to create instance afresh") env[:machine].id = client.info['instance_name'] break end end @app.call(env) end |