class Octo::OctoProjectShow
Public Instance Methods
run()
click to toggle source
# File lib/chef/knife/octo.rb, line 1025 def run if Chef::Config[:knife][:octo_instance].nil? ui.error("Please specify your Octopus Deploy instance in your knife config as -\nknife[:octo_instance] = 'MYOCTO.MYDOMAIN'") exit end if Chef::Config[:knife][:octo_apikey].nil? ui.error("Please specify your Octopus API key in your knife config as -\nknife[:octo_apikey] = 'MYKEY'\nSee Also : https://octopus.com/docs/api-and-integration/api/how-to-create-an-api-key") exit end if name_args.size == 0 ui.error("#{'Provide the project name!'.red}") return end if (config[:env] && !config[:release]) ui.error('You cannot specify just an environment, specify a release and an environment.') exit end octo_methods = OctoHelperMethods.new(Chef::Config[:knife][:octo_apikey],Chef::Config[:knife][:octo_instance]) request = octo_methods.generic_call('GET', "projects/#{name_args[0]}", false) case name_args.size when 1 if config[:release] ui.error('You specified the release flag but did not provide a release number.') exit end if config[:env] ui.error('You cannot specify just an environment, specify a release and an environment.') exit end if request['response'] == 'ok' octo_methods.create_local_file_by_id('environments') if config[:long] parser = octo_methods.parse_project_list(request['message'],true,false) octo_methods.delete_local_file else parser = octo_methods.parse_project_list(request['message'],false,false) end if parser['response'] == 'ok' print parser['message'] else ui.error(parser['message']) end else ui.error(request['message']) end octo_methods.delete_local_file when 2 if config[:release] if request['response'] == 'ok' second_request = octo_methods.generic_call('GET', "projects/#{request['message']['Id']}/releases/#{name_args[1]}", false) if second_request['response'] == 'ok' release_result = octo_methods.parse_project_release(second_request['message']) if release_result['response'] == 'ok' print release_result['message'] else ui.error(release_result['message']) end else ui.error(second_request['message']) end else ui.error(request['message']) end end when 3 # if config env if (config[:release] && config[:env]) if request['response'] == 'ok' second_request = octo_methods.generic_call('GET', "projects/#{request['message']['Id']}/releases/#{name_args[1]}", false) if second_request['response'] == 'ok' r_id = second_request['message']['Id'] env = octo_methods.eid_from_name(name_args[2]) if env['response'] == 'ok' third_request = octo_methods.generic_call('GET', "releases/#{r_id}/deployments/preview/#{env['message']}", false) if third_request['response'] == 'ok' if config[:long] d_deets = octo_methods.parse_deployment(third_request['message'],true) else d_deets = octo_methods.parse_deployment(third_request['message'],false) end if d_deets['response'] == 'ok' print d_deets['message'] else ui.error(d_deets['message']) exit end else ui.error(third_request['message']) exit end else ui.error(env['message']) end else ui.error(second_request['message']) exit end else ui.error(request['message']) end end # end env else ui.error('You can only specify two options') end print "\n" end