class Chef::Knife::CloudstackPublicipCreate
Public Instance Methods
run()
click to toggle source
# File lib/chef/knife/cloudstack_publicip_create.rb, line 38 def run $stdout.sync = true validate! options = {} if locate_config_value(:networkid) != nil options['networkid']=locate_config_value(:networkid) end if locate_config_value(:zoneid) != nil options['zoneid']=locate_config_value(:zoneid) publicip_list = [ ui.color('ID', :bold), ui.color('ipaddress', :bold), ui.color('isSourceNAT', :bold), ui.color('isStaticNAT', :bold) ] response = connection.acquire_ip_address(options) publicipid = response['associateipaddressresponse']['id'] jobid = response['associateipaddressresponse'].fetch('jobid') publicip_assign = connection.query_async_job_result('jobid'=>jobid) print "#{ui.color("Waiting for assigning Public IP", :magenta)}" while publicip_assign['queryasyncjobresultresponse'].fetch('jobstatus') != 1 print "#{ui.color(".", :magenta)}" sleep(5) publicip_assign = connection.query_async_job_result('jobid'=>jobid) end puts "\n\n" publicip_assign = connection.query_async_job_result('jobid'=>jobid) publicip = publicip_assign['queryasyncjobresultresponse']['jobresult']['ipaddress'] publicip_list << publicip['id'].to_s publicip_list << publicip['ipaddress'].to_s publicip_list << publicip['issourcenat'].to_s publicip_list << publicip['isstaticnat'].to_s puts ui.list(publicip_list, :columns_across, 4) else puts 'Error. Missing Zone ID (-z).' end end