Class: Commands::DeployGroupCreate
- Inherits:
-
Object
- Object
- Commands::DeployGroupCreate
- Defined in:
- lib/commands/deploy_group_create.rb
Instance Method Summary collapse
-
#options ⇒ Object
holds the options that were passed you can set any initial defaults here.
- #register(opts, global_options) ⇒ Object
-
#required_options ⇒ Object
required options.
- #run(global_options, amazon) ⇒ Object
Instance Method Details
#options ⇒ Object
holds the options that were passed you can set any initial defaults here
6 7 8 9 10 |
# File 'lib/commands/deploy_group_create.rb', line 6 def @options ||= { :amazon_elb => '' } end |
#register(opts, global_options) ⇒ Object
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 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/commands/deploy_group_create.rb', line 31 def register(opts, ) opts. = "Usage: deploy_group_create [options]" opts.description = "Create a deploy group" opts.on('-g', "--group name", "Required - Name of this deploy group.") do |v| [:group] = v end opts.on("--app_name appname", "Required - Name of the application.") do |v| [:app_name] = v end opts.on("--rails_env rails_env", "Required - The rails environment to use on deploy.") do |v| [:rails_env] = v end opts.on("--vhost vhost", "Required - The vhost your server will be deployed as.") do |v| [:vhost] = v end opts.on("--email_host emailhost", "Required - The email host name to use for incomming email processing.") do |v| [:email_host] = v end opts.on("--app_git_url app_git_url", "Required - Git URL to fetch code from.") do |v| [:app_git_url] = v end opts.on("--extra_json_file extra", "Optional - A file with JSON that has application custom context associated with this deploy group.") do |v| [:extra_json_file] = v end opts.on("--zone availability_zone", MetaOptions.availability_zones, "The amazon availability zone - currently only east coast.") do |v| [:availability_zone] = v end opts.on("--amazon_security_key key", "Required - The SSH key name to use, assumes pre-configured on Amazon.") do |v| [:amazon_security_key] = v end opts.on("--amazon_security_group group", "Required - The amazon security group, assumes pre-configured on Amazon.") do |v| [:amazon_security_group] = v end opts.on("--amazon_image ami", "Required - The baseline Amazon image to use, assumes pre-configured on Amazon.") do |v| [:amazon_image] = v end opts.on("--amazon_elb load_balancer", "Optional - The elastic load balancer we operate under.") do |v| [:amazon_elb] = v end opts.on("--database_host database", "Required - The database host name.") do |v| [:database_host] = v end opts.on("--database_username username", "Required - The database user name name.") do |v| [:database_username] = v end opts.on("--database_password password", "Required - The database password.") do |v| [:database_password] = v end opts.on("--database_schema schema", "Required - The database schema name.") do |v| [:database_schema] = v end end |
#required_options ⇒ Object
required options
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/commands/deploy_group_create.rb', line 13 def @required_options ||= Set.new [ :group, :app_name, :rails_env, :vhost, :email_host, :app_git_url, :amazon_security_key, :amazon_security_group, :amazon_image, :database_host, :database_username, :database_password, :database_schema ] end |
#run(global_options, amazon) ⇒ Object
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
# File 'lib/commands/deploy_group_create.rb', line 102 def run(, amazon) group_name = [:group] extra_file = [:extra_json_file] if !extra_file.nil? # they are passing a path to a file containing custom json so add it to the extra field .delete(:extra_json_file) json = File.open(extra_file, 'r') {|f| f.read } # make sure we can parse into a hash extra = JSON.parse(json) [:extra] = extra end config_json = JSON.fast_generate() # first see if already exists deploy_group = ZZSharedLib::DeployGroupSimpleDB.find_by_zz_object_type_and_group(ZZSharedLib::DeployGroupSimpleDB.object_type, group_name, :auto_load => true) if !deploy_group.nil? raise "This deploy group already exists. Doing nothing." end deploy_group = ZZSharedLib::DeployGroupSimpleDB::create(:zz_object_type => ZZSharedLib::DeployGroupSimpleDB.object_type, :group => group_name, :config_json => config_json, :recipes_deploy_tag => "origin/master", :app_deploy_tag => "master", :created_at => Time.now.strftime('%Y-%m-%dT%H:%M:%S%z')) end |