simple_deploy 0.5.3 → 0.5.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +5 -0
- data/lib/simple_deploy/backoff.rb +9 -0
- data/lib/simple_deploy/cli/deploy.rb +10 -1
- data/lib/simple_deploy/cli/instances.rb +3 -1
- data/lib/simple_deploy/stack/deployment.rb +5 -0
- data/lib/simple_deploy/stack.rb +8 -1
- data/lib/simple_deploy/version.rb +1 -1
- data/lib/simple_deploy.rb +1 -0
- data/spec/backoff_spec.rb +25 -0
- data/spec/cli/deploy_spec.rb +9 -3
- data/spec/stack/deployment_spec.rb +1 -1
- data/spec/stack_spec.rb +46 -0
- metadata +5 -2
    
        data/CHANGELOG
    CHANGED
    
    
| @@ -27,6 +27,13 @@ export SIMPLE_DEPLOY_SSH_USER=fred | |
| 27 27 | 
             
            export SIMPLE_DEPLOY_SSH_KEY=$HOME/.ssh/id_dsa
         | 
| 28 28 | 
             
            simple_deploy deploy -n STACK_NAME -n STACK_NAME -e ENVIRONMENT
         | 
| 29 29 |  | 
| 30 | 
            +
            Using Internal IP for SSH:
         | 
| 31 | 
            +
             | 
| 32 | 
            +
            Simple deploy defaults to using the public IP when ssh'ng to stacks. This option instructs it
         | 
| 33 | 
            +
            to use the private IP, which is needed when ssh'ng from one stack to another.
         | 
| 34 | 
            +
             | 
| 35 | 
            +
            simple_deploy deploy -n STACK_NAME -n STACK_NAME -e ENVIRONMENT -i
         | 
| 36 | 
            +
             | 
| 30 37 | 
             
            EOS
         | 
| 31 38 | 
             
                      opt :help, "Display Help"
         | 
| 32 39 | 
             
                      opt :attributes, "= seperated attribute and it's value", :type  => :string,
         | 
| @@ -38,6 +45,7 @@ EOS | |
| 38 45 | 
             
                      opt :name, "Stack name(s) of stack to deploy", :type => :string,
         | 
| 39 46 | 
             
                                                                     :multi => true
         | 
| 40 47 | 
             
                      opt :quiet, "Quiet, do not send notifications"
         | 
| 48 | 
            +
                      opt :internal, "Use internal IP for ssh commands"
         | 
| 41 49 | 
             
                    end
         | 
| 42 50 |  | 
| 43 51 | 
             
                    CLI::Shared.valid_options? :provided => opts,
         | 
| @@ -54,7 +62,8 @@ EOS | |
| 54 62 |  | 
| 55 63 | 
             
                      stack = Stack.new :environment => opts[:environment],
         | 
| 56 64 | 
             
                                        :name        => name,
         | 
| 57 | 
            -
                                        :logger      => logger
         | 
| 65 | 
            +
                                        :logger      => logger,
         | 
| 66 | 
            +
                                        :internal    => opts[:internal]
         | 
| 58 67 |  | 
| 59 68 | 
             
                      stack.update :force => opts[:force], :attributes => new_attributes if new_attributes.any?
         | 
| 60 69 |  | 
| @@ -16,6 +16,7 @@ EOS | |
| 16 16 | 
             
                      opt :help, "Display Help"
         | 
| 17 17 | 
             
                      opt :environment, "Set the target environment", :type => :string
         | 
| 18 18 | 
             
                      opt :name, "Stack name to manage", :type => :string
         | 
| 19 | 
            +
                      opt :internal, "Use internal IP for ssh commands"
         | 
| 19 20 | 
             
                    end
         | 
| 20 21 |  | 
| 21 22 | 
             
                    CLI::Shared.valid_options? :provided => opts,
         | 
| @@ -28,7 +29,8 @@ EOS | |
| 28 29 | 
             
                    stack = Stack.new :environment => opts[:environment],
         | 
| 29 30 | 
             
                                      :name        => opts[:name],
         | 
| 30 31 | 
             
                                      :config      => config,
         | 
| 31 | 
            -
                                      :logger      => logger
         | 
| 32 | 
            +
                                      :logger      => logger,
         | 
| 33 | 
            +
                                      :internal    => opts[:internal]
         | 
| 32 34 |  | 
| 33 35 | 
             
                    instances = stack.instances
         | 
| 34 36 | 
             
                    if instances.nil? || instances.empty?
         | 
    
        data/lib/simple_deploy/stack.rb
    CHANGED
    
    | @@ -10,6 +10,8 @@ module SimpleDeploy | |
| 10 10 | 
             
                  @name = args[:name]
         | 
| 11 11 | 
             
                  @config = Config.new :logger => args[:logger]
         | 
| 12 12 | 
             
                  @logger = @config.logger
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                  @use_internal_ips = !!args[:internal]
         | 
| 13 15 | 
             
                end
         | 
| 14 16 |  | 
| 15 17 | 
             
                def create(args)
         | 
| @@ -66,7 +68,12 @@ module SimpleDeploy | |
| 66 68 | 
             
                def instances
         | 
| 67 69 | 
             
                  stack.instances.map do |instance| 
         | 
| 68 70 | 
             
                    info = instance['instancesSet'].first
         | 
| 69 | 
            -
             | 
| 71 | 
            +
             | 
| 72 | 
            +
                    if info['vpcId'] || @use_internal_ips
         | 
| 73 | 
            +
                      info['privateIpAddress']
         | 
| 74 | 
            +
                    else
         | 
| 75 | 
            +
                      info['ipAddress']
         | 
| 76 | 
            +
                    end
         | 
| 70 77 | 
             
                  end
         | 
| 71 78 | 
             
                end
         | 
| 72 79 |  | 
    
        data/lib/simple_deploy.rb
    CHANGED
    
    
| @@ -0,0 +1,25 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe SimpleDeploy::Backoff do
         | 
| 4 | 
            +
              describe 'exp_periods' do
         | 
| 5 | 
            +
                it 'should yield each period' do
         | 
| 6 | 
            +
                  expected_periods = [1, 2, 4]
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                  i = 0
         | 
| 9 | 
            +
                  SimpleDeploy::Backoff.exp_periods do |p|
         | 
| 10 | 
            +
                    expected_periods[i].should == p
         | 
| 11 | 
            +
                    i += 1
         | 
| 12 | 
            +
                  end
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                it 'should generate and yield a specified number of periods' do
         | 
| 16 | 
            +
                  expected_periods = [1, 2]
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                  i = 0
         | 
| 19 | 
            +
                  SimpleDeploy::Backoff.exp_periods(2) do |p|
         | 
| 20 | 
            +
                    expected_periods[i].should == p
         | 
| 21 | 
            +
                    i += 1
         | 
| 22 | 
            +
                  end
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
              end
         | 
| 25 | 
            +
            end
         | 
    
        data/spec/cli/deploy_spec.rb
    CHANGED
    
    | @@ -19,6 +19,7 @@ describe SimpleDeploy::CLI::Deploy do | |
| 19 19 | 
             
                              :log_level   => 'debug',
         | 
| 20 20 | 
             
                              :name        => ['my_stack'],
         | 
| 21 21 | 
             
                              :force       => true,
         | 
| 22 | 
            +
                              :internal    => false,
         | 
| 22 23 | 
             
                              :attributes  => [] }
         | 
| 23 24 |  | 
| 24 25 | 
             
                  SimpleDeploy::CLI::Shared.should_receive(:valid_options?).
         | 
| @@ -35,7 +36,8 @@ describe SimpleDeploy::CLI::Deploy do | |
| 35 36 | 
             
                  SimpleDeploy::Stack.should_receive(:new).
         | 
| 36 37 | 
             
                                      with(:environment => 'my_env',
         | 
| 37 38 | 
             
                                           :logger      => @logger,
         | 
| 38 | 
            -
                                           :name        => 'my_stack' | 
| 39 | 
            +
                                           :name        => 'my_stack',
         | 
| 40 | 
            +
                                           :internal    => false).
         | 
| 39 41 | 
             
                                      and_return(@stack)
         | 
| 40 42 |  | 
| 41 43 | 
             
                  @stack.should_receive(:deploy).with(true).and_return(true)
         | 
| @@ -50,6 +52,7 @@ describe SimpleDeploy::CLI::Deploy do | |
| 50 52 | 
             
                              :log_level   => 'debug',
         | 
| 51 53 | 
             
                              :name        => ['my_stack'],
         | 
| 52 54 | 
             
                              :force       => true,
         | 
| 55 | 
            +
                              :internal    => false,
         | 
| 53 56 | 
             
                              :attributes  => [] }
         | 
| 54 57 |  | 
| 55 58 | 
             
                  SimpleDeploy::CLI::Shared.should_receive(:valid_options?).
         | 
| @@ -66,7 +69,8 @@ describe SimpleDeploy::CLI::Deploy do | |
| 66 69 | 
             
                  SimpleDeploy::Stack.should_receive(:new).
         | 
| 67 70 | 
             
                                      with(:environment => 'my_env',
         | 
| 68 71 | 
             
                                           :logger      => @logger,
         | 
| 69 | 
            -
                                           :name        => 'my_stack' | 
| 72 | 
            +
                                           :name        => 'my_stack',
         | 
| 73 | 
            +
                                           :internal    => false).
         | 
| 70 74 | 
             
                                      and_return(@stack)
         | 
| 71 75 |  | 
| 72 76 | 
             
                  @stack.should_receive(:deploy).with(true).and_return(false)
         | 
| @@ -83,6 +87,7 @@ describe SimpleDeploy::CLI::Deploy do | |
| 83 87 | 
             
                              :log_level   => 'debug',
         | 
| 84 88 | 
             
                              :name        => ['my_stack'],
         | 
| 85 89 | 
             
                              :force       => true,
         | 
| 90 | 
            +
                              :internal    => false,
         | 
| 86 91 | 
             
                              :attributes  => ['foo=bah'] }
         | 
| 87 92 |  | 
| 88 93 | 
             
                  SimpleDeploy::CLI::Shared.should_receive(:valid_options?).
         | 
| @@ -99,7 +104,8 @@ describe SimpleDeploy::CLI::Deploy do | |
| 99 104 | 
             
                  SimpleDeploy::Stack.should_receive(:new).
         | 
| 100 105 | 
             
                                      with(:environment => 'my_env',
         | 
| 101 106 | 
             
                                           :logger      => @logger,
         | 
| 102 | 
            -
                                           :name        => 'my_stack' | 
| 107 | 
            +
                                           :name        => 'my_stack',
         | 
| 108 | 
            +
                                           :internal    => false).
         | 
| 103 109 | 
             
                                      and_return(@stack)
         | 
| 104 110 |  | 
| 105 111 | 
             
                  @stack.should_receive(:update).with(hash_including(:force => true, :attributes => [{'foo' => 'bah'}]))
         | 
| @@ -103,7 +103,7 @@ describe SimpleDeploy do | |
| 103 103 | 
             
                  status_mock = mock 'status mock'
         | 
| 104 104 | 
             
                  SimpleDeploy::Stack::Deployment::Status.should_receive(:new).
         | 
| 105 105 | 
             
                                                          and_return status_mock
         | 
| 106 | 
            -
                  status_mock.should_receive(:clear_for_deployment?).and_return false, true
         | 
| 106 | 
            +
                  status_mock.should_receive(:clear_for_deployment?).and_return false, true, true
         | 
| 107 107 | 
             
                  status_mock.should_receive(:clear_deployment_lock).with(true)
         | 
| 108 108 | 
             
                  status_mock.should_receive(:set_deployment_in_progress)
         | 
| 109 109 | 
             
                  @deployment_mock.should_receive(:simpledeploy)
         | 
    
        data/spec/stack_spec.rb
    CHANGED
    
    | @@ -12,6 +12,7 @@ describe SimpleDeploy do | |
| 12 12 | 
             
                @config_stub.stub(:artifact_cloud_formation_url).and_return('CookBooksURL')
         | 
| 13 13 |  | 
| 14 14 | 
             
                SimpleDeploy::Config.should_receive(:new).
         | 
| 15 | 
            +
                                     at_least(:once).
         | 
| 15 16 | 
             
                                     with(:logger => 'my-logger').
         | 
| 16 17 | 
             
                                     and_return @config_stub
         | 
| 17 18 | 
             
                @stack = SimpleDeploy::Stack.new :environment => 'test-env',
         | 
| @@ -157,4 +158,49 @@ describe SimpleDeploy do | |
| 157 158 | 
             
                  @stack.destroy.should be_true
         | 
| 158 159 | 
             
                end
         | 
| 159 160 | 
             
              end
         | 
| 161 | 
            +
             | 
| 162 | 
            +
              describe 'instances' do
         | 
| 163 | 
            +
                before do
         | 
| 164 | 
            +
                  @instances = [{ 'instancesSet' => [{ 'ipAddress' => '50.40.30.20', 'privateIpAddress' => '10.1.2.3' }] }]
         | 
| 165 | 
            +
                  @environment_config_mock.stub(:[])
         | 
| 166 | 
            +
                end
         | 
| 167 | 
            +
             | 
| 168 | 
            +
                it 'should use the private IP when vpc' do
         | 
| 169 | 
            +
                  stack = SimpleDeploy::Stack.new :environment => 'test-env',
         | 
| 170 | 
            +
                                                   :name        => 'test-stack',
         | 
| 171 | 
            +
                                                   :logger      => 'my-logger',
         | 
| 172 | 
            +
                                                   :config      => @config_stub,
         | 
| 173 | 
            +
                                                   :internal    => false
         | 
| 174 | 
            +
                  stack.stub(:stack) { @stack_mock }
         | 
| 175 | 
            +
             | 
| 176 | 
            +
                  @instances.first['instancesSet'].first['vpcId'] = 'my-vpc'
         | 
| 177 | 
            +
                  @stack_mock.stub(:instances).and_return(@instances)
         | 
| 178 | 
            +
             | 
| 179 | 
            +
                  stack.send(:instances).should == ['10.1.2.3']
         | 
| 180 | 
            +
                end
         | 
| 181 | 
            +
             | 
| 182 | 
            +
                it 'should use the private IP when internal' do
         | 
| 183 | 
            +
                  stack = SimpleDeploy::Stack.new :environment => 'test-env',
         | 
| 184 | 
            +
                                                   :name        => 'test-stack',
         | 
| 185 | 
            +
                                                   :logger      => 'my-logger',
         | 
| 186 | 
            +
                                                   :config      => @config_stub,
         | 
| 187 | 
            +
                                                   :internal    => true
         | 
| 188 | 
            +
                  stack.stub(:stack) { @stack_mock }
         | 
| 189 | 
            +
                  @stack_mock.stub(:instances).and_return(@instances)
         | 
| 190 | 
            +
             | 
| 191 | 
            +
                  stack.send(:instances).should == ['10.1.2.3']
         | 
| 192 | 
            +
                end
         | 
| 193 | 
            +
             | 
| 194 | 
            +
                it 'should use the public IP when not vpc and not internal' do
         | 
| 195 | 
            +
                  stack = SimpleDeploy::Stack.new :environment => 'test-env',
         | 
| 196 | 
            +
                                                   :name        => 'test-stack',
         | 
| 197 | 
            +
                                                   :logger      => 'my-logger',
         | 
| 198 | 
            +
                                                   :config      => @config_stub,
         | 
| 199 | 
            +
                                                   :internal    => false
         | 
| 200 | 
            +
                  stack.stub(:stack) { @stack_mock }
         | 
| 201 | 
            +
                  @stack_mock.stub(:instances).and_return(@instances)
         | 
| 202 | 
            +
             | 
| 203 | 
            +
                  stack.send(:instances).should == ['50.40.30.20']
         | 
| 204 | 
            +
                end
         | 
| 205 | 
            +
              end
         | 
| 160 206 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: simple_deploy
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.5. | 
| 4 | 
            +
              version: 0.5.4
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2012-10- | 
| 12 | 
            +
            date: 2012-10-17 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: rspec
         | 
| @@ -109,6 +109,7 @@ files: | |
| 109 109 | 
             
            - bin/simple_deploy
         | 
| 110 110 | 
             
            - lib/simple_deploy.rb
         | 
| 111 111 | 
             
            - lib/simple_deploy/artifact.rb
         | 
| 112 | 
            +
            - lib/simple_deploy/backoff.rb
         | 
| 112 113 | 
             
            - lib/simple_deploy/cli.rb
         | 
| 113 114 | 
             
            - lib/simple_deploy/cli/attributes.rb
         | 
| 114 115 | 
             
            - lib/simple_deploy/cli/clone.rb
         | 
| @@ -139,6 +140,7 @@ files: | |
| 139 140 | 
             
            - script/ci_setup
         | 
| 140 141 | 
             
            - simple_deploy.gemspec
         | 
| 141 142 | 
             
            - spec/artifact_spec.rb
         | 
| 143 | 
            +
            - spec/backoff_spec.rb
         | 
| 142 144 | 
             
            - spec/cli/attributes_spec.rb
         | 
| 143 145 | 
             
            - spec/cli/clone_spec.rb
         | 
| 144 146 | 
             
            - spec/cli/deploy_spec.rb
         | 
| @@ -181,6 +183,7 @@ specification_version: 3 | |
| 181 183 | 
             
            summary: I help with deployments
         | 
| 182 184 | 
             
            test_files:
         | 
| 183 185 | 
             
            - spec/artifact_spec.rb
         | 
| 186 | 
            +
            - spec/backoff_spec.rb
         | 
| 184 187 | 
             
            - spec/cli/attributes_spec.rb
         | 
| 185 188 | 
             
            - spec/cli/clone_spec.rb
         | 
| 186 189 | 
             
            - spec/cli/deploy_spec.rb
         |