dployr 0.0.3 → 0.0.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.
- checksums.yaml +4 -4
- data/README.md +60 -23
- data/lib/dployr/cli.rb +1 -0
- data/lib/dployr/commands/config.rb +21 -13
- data/lib/dployr/compute/aws.rb +33 -32
- data/lib/dployr/compute/common.rb +28 -0
- data/lib/dployr/compute/gce.rb +24 -13
- data/lib/dployr/configuration.rb +19 -4
- data/lib/dployr/version.rb +1 -1
- data/spec/commands_config_spec.rb +83 -0
- data/spec/configuration_spec.rb +14 -2
- data/spec/fixtures/basic/Dployrfile.yml +41 -0
- data/spec/fixtures/{config → german}/Dployrfile.yml +5 -11
- data/spec/fixtures/hello/createExecUser.sh +18 -0
- data/spec/fixtures/hello/jetty +562 -0
- data/spec/fixtures/hello/jetty.sh +28 -0
- metadata +18 -7
- /data/spec/fixtures/{config/hello → hello}/hello.sh +0 -0
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 55e8744de1ada22c752a30e73a533774383b957a
         | 
| 4 | 
            +
              data.tar.gz: 71bd763bd9e8de49200a57c9622f6c142de98aec
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 59247fbc73d154f5d8535adbc1e20584be2e5e243764260e033482f09b12f73f29513b7f2887f7676d5bd1706a733237c9257aed82533f5cf22aa4db00c4f1fc
         | 
| 7 | 
            +
              data.tar.gz: 964b34cf57543d3db61b460147d920b539ac7e40202dd5194488354fd21e8f3d29842d1038910b4602bbe0e719fe71a1767265a6f00d7fcc92839e798c5721c6
         | 
    
        data/README.md
    CHANGED
    
    | @@ -2,7 +2,7 @@ | |
| 2 2 |  | 
| 3 3 | 
             
            > Multicloud management and deployment made simple
         | 
| 4 4 |  | 
| 5 | 
            -
            > **Spoiler! Alpha project.  | 
| 5 | 
            +
            > **Spoiler! Alpha project. Use it by your own risk**
         | 
| 6 6 |  | 
| 7 7 | 
             
            <table>
         | 
| 8 8 | 
             
            <tr>
         | 
| @@ -18,8 +18,8 @@ | |
| 18 18 | 
             
            **Dployr** is a Ruby utility that simplifies cloud management
         | 
| 19 19 | 
             
            and deployment across different providers
         | 
| 20 20 |  | 
| 21 | 
            -
            You can configure your infraestructure and deployment from a | 
| 22 | 
            -
             | 
| 21 | 
            +
            You can configure your infraestructure and deployment from a
         | 
| 22 | 
            +
            simple configuration file which support built-in rich features
         | 
| 23 23 |  | 
| 24 24 | 
             
            Dployr only works in Ruby >= `1.9.x`
         | 
| 25 25 |  | 
| @@ -29,12 +29,13 @@ Dployr only works in Ruby >= `1.9.x` | |
| 29 29 | 
             
            $ gem install dployr
         | 
| 30 30 | 
             
            ```
         | 
| 31 31 |  | 
| 32 | 
            -
             | 
| 32 | 
            +
            If you need to use it from another Ruby package,
         | 
| 33 | 
            +
            add it as dependency in your `Gemfile` or `.gemspec` file
         | 
| 33 34 | 
             
            ```ruby
         | 
| 34 35 | 
             
            # gemspec
         | 
| 35 | 
            -
            spec.add_dependency 'dployr', '>= 0.0. | 
| 36 | 
            +
            spec.add_dependency 'dployr', '>= 0.0.3'
         | 
| 36 37 | 
             
            # Gemfile
         | 
| 37 | 
            -
            gem 'dployr', '>= 0.0. | 
| 38 | 
            +
            gem 'dployr', '>= 0.0.3'
         | 
| 38 39 | 
             
            ```
         | 
| 39 40 |  | 
| 40 41 | 
             
            ## Documentation
         | 
| @@ -43,7 +44,18 @@ Dployr documentation and API is available from [RubyDoc][rubydoc] | |
| 43 44 |  | 
| 44 45 | 
             
            ## Features
         | 
| 45 46 |  | 
| 46 | 
            -
             | 
| 47 | 
            +
            - Fully configurable from Ruby or YAML file with rich features like templating
         | 
| 48 | 
            +
            - Supports deployment to multiple providers
         | 
| 49 | 
            +
            - Built-in support for defailted instances configuration
         | 
| 50 | 
            +
            - Local and remote scripts execution per stage phase (start, test, provision, update, stop...)
         | 
| 51 | 
            +
            - Featured command-line and programmatic API
         | 
| 52 | 
            +
             | 
| 53 | 
            +
            ## Supported providers
         | 
| 54 | 
            +
             | 
| 55 | 
            +
            Note that as Dployr is still in alpha stage, there are only a few providers supported
         | 
| 56 | 
            +
             | 
| 57 | 
            +
            - Amazon Web Services (`aws`)
         | 
| 58 | 
            +
            - Google Compute Engine (`gce`)
         | 
| 47 59 |  | 
| 48 60 | 
             
            ## Configuration
         | 
| 49 61 |  | 
| @@ -76,9 +88,15 @@ Notation: `%{attribute-name}` | |
| 76 88 |  | 
| 77 89 | 
             
            ##### Iteration context variables
         | 
| 78 90 |  | 
| 79 | 
            -
            You can  | 
| 91 | 
            +
            You can use references from config strings to specific iteration context values
         | 
| 80 92 |  | 
| 81 | 
            -
            Notation: `${ | 
| 93 | 
            +
            Notation: `${value}`
         | 
| 94 | 
            +
             | 
| 95 | 
            +
            Supported values:
         | 
| 96 | 
            +
             | 
| 97 | 
            +
            - **provider** - Current context provider name identifier
         | 
| 98 | 
            +
            - **region** - Current context region name identifier
         | 
| 99 | 
            +
            - **name** - Current context template name identifier
         | 
| 82 100 |  | 
| 83 101 | 
             
            ##### Environment variables
         | 
| 84 102 |  | 
| @@ -140,7 +158,6 @@ default: | |
| 140 158 | 
             
                    args: "%{name}"
         | 
| 141 159 | 
             
                    path: ./scripts/updatedns.sh
         | 
| 142 160 |  | 
| 143 | 
            -
             | 
| 144 161 | 
             
            custom:
         | 
| 145 162 | 
             
              name: 1
         | 
| 146 163 | 
             
              web-server:
         | 
| @@ -159,23 +176,26 @@ custom: | |
| 159 176 | 
             
                    attributes:
         | 
| 160 177 | 
             
                      instance_type: m1.large
         | 
| 161 178 | 
             
                scripts:
         | 
| 162 | 
            -
                   | 
| 179 | 
            +
                  pre-start:
         | 
| 163 180 | 
             
                    -
         | 
| 164 181 | 
             
                      args:
         | 
| 165 182 | 
             
                        - "%{name}"
         | 
| 166 183 | 
             
                        - "%{type}"
         | 
| 167 184 | 
             
                        - "%{domain}"
         | 
| 168 | 
            -
                      path: ./scripts | 
| 169 | 
            -
                   | 
| 170 | 
            -
                     | 
| 171 | 
            -
                       | 
| 172 | 
            -
             | 
| 173 | 
            -
             | 
| 174 | 
            -
             | 
| 175 | 
            -
             | 
| 176 | 
            -
                       | 
| 177 | 
            -
             | 
| 178 | 
            -
             | 
| 185 | 
            +
                      path: ./scripts/pre-start.sh
         | 
| 186 | 
            +
                  start:
         | 
| 187 | 
            +
                    -
         | 
| 188 | 
            +
                      args:
         | 
| 189 | 
            +
                        - "%{hydra}"
         | 
| 190 | 
            +
                      path: ./scripts/configure.sh
         | 
| 191 | 
            +
                  provision:
         | 
| 192 | 
            +
                    -
         | 
| 193 | 
            +
                      args:
         | 
| 194 | 
            +
                        - "%{$provider}-%{region}"
         | 
| 195 | 
            +
                        - "%{type}"
         | 
| 196 | 
            +
                      path: ./scripts/provision.sh
         | 
| 197 | 
            +
                  test:
         | 
| 198 | 
            +
                    - path: ./scripts/serverspec.sh
         | 
| 179 199 | 
             
            ```
         | 
| 180 200 |  | 
| 181 201 | 
             
            ## Command-line interface
         | 
| @@ -194,18 +214,35 @@ Commands | |
| 194 214 | 
             
              provision instance provisioning
         | 
| 195 215 | 
             
              config    generate configuration in YAML from Dployrfile
         | 
| 196 216 | 
             
              execute   run custom stages
         | 
| 217 | 
            +
              ssh       ssh into machine
         | 
| 197 218 | 
             
              init      create a sample Dployrfile
         | 
| 198 219 |  | 
| 199 220 | 
             
            Options
         | 
| 200 221 |  | 
| 201 222 | 
             
              -n, --name NAME                  template name identifier to load
         | 
| 202 223 | 
             
              -f, --file PATH                  custom config file path to load
         | 
| 203 | 
            -
              -a, --attributes ATTRS           aditional attributes to pass to the configuration in matrix query | 
| 224 | 
            +
              -a, --attributes ATTRS           aditional attributes to pass to the configuration in matrix query
         | 
| 204 225 | 
             
              -p, --provider VALUES            provider to use (allow multiple values comma-separated)
         | 
| 205 226 | 
             
              -r, --region REGION              region to use (allow multiple values comma-separated)
         | 
| 206 227 | 
             
              -v, -V, --version                version
         | 
| 207 228 | 
             
              -h, --help                       help
         | 
| 229 | 
            +
            ```
         | 
| 208 230 |  | 
| 231 | 
            +
            ### Examples
         | 
| 232 | 
            +
             | 
| 233 | 
            +
            Start a new instance. If it don't exists, it will be created
         | 
| 234 | 
            +
            ```bash
         | 
| 235 | 
            +
            $ dployr start -n name -p aws -r eu-west-1 -a 'env=dev'
         | 
| 236 | 
            +
            ```
         | 
| 237 | 
            +
             | 
| 238 | 
            +
            Provision an existent working instance
         | 
| 239 | 
            +
            ```bash
         | 
| 240 | 
            +
            $ dployr provision -n name -p aws -r eu-west-1 -a 'env=dev'
         | 
| 241 | 
            +
            ```
         | 
| 242 | 
            +
             | 
| 243 | 
            +
            Test a working instance
         | 
| 244 | 
            +
            ```bash
         | 
| 245 | 
            +
            $ dployr test -n name -p aws -r eu-west-1 -a 'env=dev'
         | 
| 209 246 | 
             
            ```
         | 
| 210 247 |  | 
| 211 248 | 
             
            ## Programmatic API
         | 
    
        data/lib/dployr/cli.rb
    CHANGED
    
    
| @@ -15,24 +15,32 @@ module Dployr | |
| 15 15 | 
             
                    end
         | 
| 16 16 | 
             
                  end
         | 
| 17 17 |  | 
| 18 | 
            +
                  private
         | 
| 19 | 
            +
             | 
| 18 20 | 
             
                  def render_file
         | 
| 19 21 | 
             
                    raise "Dployrfile was not found" if @dployr.file_path.nil?
         | 
| 20 22 | 
             
                    raise "Configuration is missing" unless @dployr.config.exists?
         | 
| 23 | 
            +
             | 
| 21 24 | 
             
                    begin
         | 
| 22 | 
            -
                       | 
| 23 | 
            -
                        config = get_region_config options
         | 
| 24 | 
            -
                      elsif @name
         | 
| 25 | 
            -
                        config = @dployr.config.get_config @name, @attrs
         | 
| 26 | 
            -
                      else
         | 
| 27 | 
            -
                        config = @dployr.config.get_config_all @attrs
         | 
| 28 | 
            -
                      end
         | 
| 29 | 
            -
                      unless config.nil?
         | 
| 30 | 
            -
                        puts config.to_yaml
         | 
| 31 | 
            -
                      else
         | 
| 32 | 
            -
                        @log.info "Missing configuration data"
         | 
| 33 | 
            -
                      end
         | 
| 25 | 
            +
                      print_config
         | 
| 34 26 | 
             
                    rescue Exception => e
         | 
| 35 | 
            -
                       | 
| 27 | 
            +
                      puts "Cannot generate the config: #{e}"
         | 
| 28 | 
            +
                      exit 1
         | 
| 29 | 
            +
                    end
         | 
| 30 | 
            +
                  end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                  def print_config
         | 
| 33 | 
            +
                    if @name and @options[:provider] and @options[:region]
         | 
| 34 | 
            +
                      config = get_region_config @options
         | 
| 35 | 
            +
                    elsif @name
         | 
| 36 | 
            +
                      config = @dployr.config.get_config @name, @attrs
         | 
| 37 | 
            +
                    else
         | 
| 38 | 
            +
                      config = @dployr.config.get_config_all @attrs
         | 
| 39 | 
            +
                    end
         | 
| 40 | 
            +
                    unless config.nil?
         | 
| 41 | 
            +
                      puts config.to_yaml
         | 
| 42 | 
            +
                    else
         | 
| 43 | 
            +
                      raise "Missing configuration data"
         | 
| 36 44 | 
             
                    end
         | 
| 37 45 | 
             
                  end
         | 
| 38 46 |  | 
    
        data/lib/dployr/compute/aws.rb
    CHANGED
    
    | @@ -1,10 +1,12 @@ | |
| 1 1 | 
             
            require 'fog'
         | 
| 2 | 
            -
            require ' | 
| 2 | 
            +
            require 'dployr/compute/common'
         | 
| 3 3 |  | 
| 4 4 | 
             
            module Dployr
         | 
| 5 5 | 
             
              module Compute
         | 
| 6 6 | 
             
                class AWS
         | 
| 7 | 
            -
             | 
| 7 | 
            +
                  
         | 
| 8 | 
            +
                  include Dployr::Compute::Common
         | 
| 9 | 
            +
                  
         | 
| 8 10 | 
             
                  def initialize(region)
         | 
| 9 11 | 
             
                    @options = {
         | 
| 10 12 | 
             
                      region: region[0..-2],
         | 
| @@ -15,16 +17,6 @@ module Dployr | |
| 15 17 | 
             
                    @compute = Fog::Compute.new @options
         | 
| 16 18 | 
             
                  end
         | 
| 17 19 |  | 
| 18 | 
            -
                  def get_instance(name, states)
         | 
| 19 | 
            -
                    servers = @compute.servers.all
         | 
| 20 | 
            -
                    servers.each do |instance|
         | 
| 21 | 
            -
                      if instance.tags["Name"] == name and states.include? instance.state
         | 
| 22 | 
            -
                        return instance
         | 
| 23 | 
            -
                      end
         | 
| 24 | 
            -
                    end
         | 
| 25 | 
            -
                    nil
         | 
| 26 | 
            -
                  end
         | 
| 27 | 
            -
             | 
| 28 20 | 
             
                  def get_ip(name)
         | 
| 29 21 | 
             
                    instance = get_instance(name, ["running"])
         | 
| 30 22 | 
             
                    instance.private_ip_address if instance
         | 
| @@ -63,36 +55,45 @@ module Dployr | |
| 63 55 | 
             
                        subnet_id: attributes["subnet_id"],
         | 
| 64 56 | 
             
                        security_group_ids: attributes["security_groups"],
         | 
| 65 57 | 
             
                        tags: { Name: attributes["name"] }
         | 
| 66 | 
            -
                        #private_ip_address        : private_ip_address,
         | 
| 67 | 
            -
                        #user_data                 : user_data,
         | 
| 68 | 
            -
                        #elastic_ip                : elastic_ip,
         | 
| 69 | 
            -
                        #allocate_elastic_ip       : allocate_elastic_ip,
         | 
| 70 | 
            -
                        #block_device_mapping      : block_device_mapping,
         | 
| 71 | 
            -
                        #instance_initiated_shutdown_behavior : terminate_on_shutdown == true ? "terminate" : nil,
         | 
| 72 | 
            -
                        #monitoring                : monitoring,
         | 
| 73 | 
            -
                        #ebs_optimized             : ebs_optimized
         | 
| 74 58 | 
             
                      }
         | 
| 75 59 | 
             
                      puts options.to_yaml
         | 
| 76 60 | 
             
                      server = @compute.servers.create(options)
         | 
| 77 61 | 
             
                    end
         | 
| 78 62 | 
             
                    print "Wait for instance to get online".yellow
         | 
| 79 63 | 
             
                    server.wait_for { print ".".yellow; ready? }
         | 
| 80 | 
            -
             | 
| 81 | 
            -
                     | 
| 82 | 
            -
                     | 
| 83 | 
            -
             | 
| 84 | 
            -
             | 
| 85 | 
            -
             | 
| 86 | 
            -
             | 
| 87 | 
            -
             | 
| 88 | 
            -
             | 
| 89 | 
            -
             | 
| 90 | 
            -
             | 
| 64 | 
            +
                    print "\n"
         | 
| 65 | 
            +
                    elastic_ip(attributes, server)
         | 
| 66 | 
            +
                    wait_ssh(attributes, server)
         | 
| 67 | 
            +
                  end
         | 
| 68 | 
            +
                  
         | 
| 69 | 
            +
                  private
         | 
| 70 | 
            +
                  
         | 
| 71 | 
            +
                  def get_instance(name, states)
         | 
| 72 | 
            +
                    servers = @compute.servers.all
         | 
| 73 | 
            +
                    servers.each do |instance|
         | 
| 74 | 
            +
                      if instance.tags["Name"] == name and states.include? instance.state
         | 
| 75 | 
            +
                        return instance
         | 
| 91 76 | 
             
                      end
         | 
| 92 77 | 
             
                    end
         | 
| 93 | 
            -
                    print "\n"
         | 
| 94 78 | 
             
                    nil
         | 
| 95 79 | 
             
                  end
         | 
| 80 | 
            +
                  
         | 
| 81 | 
            +
                  def elastic_ip(attributes, server)
         | 
| 82 | 
            +
                    if attributes["public_ip"]
         | 
| 83 | 
            +
                      if attributes["public_ip"] == "new"
         | 
| 84 | 
            +
                        puts "Creating new elastic ip...".yellow
         | 
| 85 | 
            +
                        response = @compute.allocate_address(server.vpc_id)
         | 
| 86 | 
            +
                        allocation_id = response[:body]["allocationId"]
         | 
| 87 | 
            +
                        attributes["public_ip"] = response[:body]["publicIp"]
         | 
| 88 | 
            +
                      else
         | 
| 89 | 
            +
                        puts "Looking for elastic ip #{attributes["public_ip"]}...".yellow
         | 
| 90 | 
            +
                        eip = @compute.addresses.get(attributes["public_ip"])
         | 
| 91 | 
            +
                        allocation_id = eip.allocation_id
         | 
| 92 | 
            +
                      end
         | 
| 93 | 
            +
                      puts "Associating elastic ip #{attributes["public_ip"]}...".yellow
         | 
| 94 | 
            +
                      @compute.associate_address(server.id,nil,nil,allocation_id)
         | 
| 95 | 
            +
                    end
         | 
| 96 | 
            +
                  end
         | 
| 96 97 |  | 
| 97 98 | 
             
                end
         | 
| 98 99 | 
             
              end
         | 
| @@ -0,0 +1,28 @@ | |
| 1 | 
            +
            require 'net/ssh'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Dployr
         | 
| 4 | 
            +
              module Compute
         | 
| 5 | 
            +
                module Common
         | 
| 6 | 
            +
                  
         | 
| 7 | 
            +
                  module_function
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                  def wait_ssh(attributes, server)
         | 
| 10 | 
            +
                    print "Wait for ssh to get ready...".yellow
         | 
| 11 | 
            +
                    while true
         | 
| 12 | 
            +
                      begin
         | 
| 13 | 
            +
                        Net::SSH.start(server.private_ip_address, attributes["username"], :keys => attributes["private_key_path"]) do |ssh|
         | 
| 14 | 
            +
                          print "\n"
         | 
| 15 | 
            +
                          return server.private_ip_address
         | 
| 16 | 
            +
                        end
         | 
| 17 | 
            +
                      rescue Exception => e
         | 
| 18 | 
            +
                        print ".".yellow
         | 
| 19 | 
            +
                        sleep 2
         | 
| 20 | 
            +
                      end
         | 
| 21 | 
            +
                    end
         | 
| 22 | 
            +
                    print "\n"
         | 
| 23 | 
            +
                  end
         | 
| 24 | 
            +
                  
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
              end
         | 
| 28 | 
            +
            end
         | 
    
        data/lib/dployr/compute/gce.rb
    CHANGED
    
    | @@ -1,10 +1,12 @@ | |
| 1 1 | 
             
            require 'fog'
         | 
| 2 | 
            -
            require ' | 
| 2 | 
            +
            require 'dployr/compute/common'
         | 
| 3 3 |  | 
| 4 4 | 
             
            module Dployr
         | 
| 5 5 | 
             
              module Compute
         | 
| 6 6 | 
             
                class GCE
         | 
| 7 7 |  | 
| 8 | 
            +
                    include Dployr::Compute::Common
         | 
| 9 | 
            +
                    
         | 
| 8 10 | 
             
                    def initialize(region)
         | 
| 9 11 | 
             
                      @options = {
         | 
| 10 12 | 
             
                        provider: 'Google',
         | 
| @@ -85,11 +87,13 @@ module Dployr | |
| 85 87 | 
             
                    end
         | 
| 86 88 |  | 
| 87 89 | 
             
                    def start(attributes, region)
         | 
| 90 | 
            +
                      external_ip(attributes, region)
         | 
| 88 91 | 
             
                      server = get_instance(attributes["name"], ["stopped", "stopping"])
         | 
| 89 92 | 
             
                      if server
         | 
| 90 93 | 
             
                        puts "Starting stopped instance for #{attributes["name"]} in #{region}...".yellow
         | 
| 91 94 | 
             
                        server.start
         | 
| 92 95 | 
             
                      else
         | 
| 96 | 
            +
                        puts "Creating boot disk...".yellow
         | 
| 93 97 | 
             
                        disks = create_disk(attributes["name"], 10, region, attributes["image_name"])
         | 
| 94 98 | 
             
                        if defined? attributes["autodelete_disk"]
         | 
| 95 99 | 
             
                          autodelete_disk  = attributes["autodelete_disk"]
         | 
| @@ -105,6 +109,7 @@ module Dployr | |
| 105 109 | 
             
                          machine_type: attributes["instance_type"],
         | 
| 106 110 | 
             
                          network: attributes["network"],
         | 
| 107 111 | 
             
                          disks: [disks.get_as_boot_disk(true, autodelete_disk)],
         | 
| 112 | 
            +
                          external_ip: attributes["public_ip"]
         | 
| 108 113 | 
             
                        }
         | 
| 109 114 |  | 
| 110 115 | 
             
                        puts options.to_yaml
         | 
| @@ -112,21 +117,27 @@ module Dployr | |
| 112 117 | 
             
                      end
         | 
| 113 118 | 
             
                      print "Wait for instance to get online".yellow
         | 
| 114 119 | 
             
                      server.wait_for { print ".".yellow; ready? }
         | 
| 115 | 
            -
             | 
| 116 | 
            -
                       | 
| 117 | 
            -
             | 
| 118 | 
            -
             | 
| 119 | 
            -
             | 
| 120 | 
            -
             | 
| 121 | 
            -
             | 
| 120 | 
            +
                      print "\n"
         | 
| 121 | 
            +
                      wait_ssh(attributes, server)
         | 
| 122 | 
            +
                  end
         | 
| 123 | 
            +
                  
         | 
| 124 | 
            +
                  private
         | 
| 125 | 
            +
                  
         | 
| 126 | 
            +
                  def external_ip(attributes, region)
         | 
| 127 | 
            +
                    if attributes["public_ip"] == "new"
         | 
| 128 | 
            +
                        puts "Looking for previous public_ip...".yellow
         | 
| 129 | 
            +
                        ip = @compute.insert_address(attributes["name"], region[0..-3])
         | 
| 130 | 
            +
                        while true
         | 
| 131 | 
            +
                          ip = @compute.get_address(attributes["name"], region[0..-3])
         | 
| 132 | 
            +
                          if ip[:body]["address"]
         | 
| 133 | 
            +
                            attributes["public_ip"].replace ip[:body]["address"]
         | 
| 134 | 
            +
                            puts "Using public_ip #{attributes["public_ip"]}".yellow
         | 
| 135 | 
            +
                            break
         | 
| 122 136 | 
             
                          end
         | 
| 123 | 
            -
             | 
| 124 | 
            -
                           | 
| 125 | 
            -
                          sleep 2
         | 
| 137 | 
            +
                          puts "Waiting for ip to be ready...".yellow
         | 
| 138 | 
            +
                          sleep 1
         | 
| 126 139 | 
             
                        end
         | 
| 127 140 | 
             
                      end
         | 
| 128 | 
            -
                      print "\n"
         | 
| 129 | 
            -
                      return nil
         | 
| 130 141 | 
             
                  end
         | 
| 131 142 |  | 
| 132 143 | 
             
                end
         | 
    
        data/lib/dployr/configuration.rb
    CHANGED
    
    | @@ -37,8 +37,8 @@ module Dployr | |
| 37 37 | 
             
                def get_config(name, attributes = {})
         | 
| 38 38 | 
             
                  instance = get_instance name
         | 
| 39 39 | 
             
                  attributes = @attributes.merge (attributes or {})
         | 
| 40 | 
            -
                  raise  | 
| 41 | 
            -
                   | 
| 40 | 
            +
                  raise Error.new "Instance '#{name.to_s}' do not exists" if instance.nil?
         | 
| 41 | 
            +
                  render_config name, instance, attributes
         | 
| 42 42 | 
             
                end
         | 
| 43 43 |  | 
| 44 44 | 
             
                def get_config_all(attributes = {})
         | 
| @@ -74,6 +74,18 @@ module Dployr | |
| 74 74 |  | 
| 75 75 | 
             
                private
         | 
| 76 76 |  | 
| 77 | 
            +
                def render_config(name, instance, attributes)
         | 
| 78 | 
            +
                  attributes = replace_variables attributes
         | 
| 79 | 
            +
                  config = merge_config instance, attributes
         | 
| 80 | 
            +
                  config = replace_name name, config
         | 
| 81 | 
            +
                  config = replace_variables config, attributes
         | 
| 82 | 
            +
                  config
         | 
| 83 | 
            +
                end
         | 
| 84 | 
            +
             | 
| 85 | 
            +
                def replace_name(name, config)
         | 
| 86 | 
            +
                  replace_keywords 'name', name, config
         | 
| 87 | 
            +
                end
         | 
| 88 | 
            +
             | 
| 77 89 | 
             
                def create_instance(name = 'unnamed', config)
         | 
| 78 90 | 
             
                  Dployr::Config::Instance.new do |i|
         | 
| 79 91 | 
             
                    i.name = name
         | 
| @@ -104,8 +116,11 @@ module Dployr | |
| 104 116 | 
             
                  attrs
         | 
| 105 117 | 
             
                end
         | 
| 106 118 |  | 
| 107 | 
            -
                def merge_config(instance)
         | 
| 108 | 
            -
                   | 
| 119 | 
            +
                def merge_config(instance, attributes = {})
         | 
| 120 | 
            +
                  config = merge_defaults instance.get_values
         | 
| 121 | 
            +
                  config[:attributes] =
         | 
| 122 | 
            +
                    (get_by_key(config, :attributes) or {}).merge attributes if attributes
         | 
| 123 | 
            +
                  merge_providers merge_parents config
         | 
| 109 124 | 
             
                end
         | 
| 110 125 |  | 
| 111 126 | 
             
                def merge_defaults(config)
         | 
    
        data/lib/dployr/version.rb
    CHANGED
    
    
| @@ -0,0 +1,83 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
            require 'dployr/commands/config'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            describe Dployr::Commands::Config do
         | 
| 5 | 
            +
             | 
| 6 | 
            +
              dployrfile = "spec/fixtures/basic/Dployrfile.yml"
         | 
| 7 | 
            +
              arguments = "config -f #{dployrfile} -n dployr -p aws -r sa-east-1a -a 'index=100'"
         | 
| 8 | 
            +
             | 
| 9 | 
            +
              before :all do
         | 
| 10 | 
            +
                @result = `bin/dployr #{arguments}`
         | 
| 11 | 
            +
                @exit_code = $?.exitstatus
         | 
| 12 | 
            +
              end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
              it "should have a valid exit code" do
         | 
| 15 | 
            +
                @result.should be_a String
         | 
| 16 | 
            +
                @exit_code.should be 0
         | 
| 17 | 
            +
              end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
              describe "attributes" do
         | 
| 20 | 
            +
                it "should have a valid attribute name" do
         | 
| 21 | 
            +
                  @result.should include "name: dployr"
         | 
| 22 | 
            +
                end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                it "should have a valid attribute index" do
         | 
| 25 | 
            +
                  @result.should match /index: [']?100[']?/
         | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                it "should have a valid attribute prefix" do
         | 
| 29 | 
            +
                  @result.should include "prefix: dev"
         | 
| 30 | 
            +
                end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                it "should have a valid attribute private_key_path" do
         | 
| 33 | 
            +
                  @result.should match /private_key_path: [\"]?~\/pems\/innotechdev.pem[\"]?/
         | 
| 34 | 
            +
                end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                it "should have a valid attribute username" do
         | 
| 37 | 
            +
                  @result.should include "username: innotechdev"
         | 
| 38 | 
            +
                end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                it "should have a valid attribute instance_type" do
         | 
| 41 | 
            +
                  @result.should include "instance_type: t1.micro"
         | 
| 42 | 
            +
                end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                it "should have a valid attribute ami" do
         | 
| 45 | 
            +
                  @result.should include "ami: ami-370daf2a"
         | 
| 46 | 
            +
                end
         | 
| 47 | 
            +
             | 
| 48 | 
            +
                it "should have a valid attribute username" do
         | 
| 49 | 
            +
                  @result.should include "username: innotechdev"
         | 
| 50 | 
            +
                end
         | 
| 51 | 
            +
             | 
| 52 | 
            +
                it "should have a valid attribute keypair" do
         | 
| 53 | 
            +
                  @result.should include "keypair: vagrant-aws-saopaulo"
         | 
| 54 | 
            +
                end
         | 
| 55 | 
            +
             | 
| 56 | 
            +
                it "should have a valid attribute security_groups" do
         | 
| 57 | 
            +
                  @result.should include "security_groups:\n  - sg-3cf3e45e"
         | 
| 58 | 
            +
                end
         | 
| 59 | 
            +
             | 
| 60 | 
            +
                it "should have a valid attribute subnet_id" do
         | 
| 61 | 
            +
                  @result.should include "subnet_id: subnet-1eebe07c"
         | 
| 62 | 
            +
                end
         | 
| 63 | 
            +
              end
         | 
| 64 | 
            +
             | 
| 65 | 
            +
              describe "scripts" do
         | 
| 66 | 
            +
                it "should have a valid script in pre-provision stage" do
         | 
| 67 | 
            +
                  @result.should match /:scripts:\n  pre-provision:\n  - source: [\"]?.\/hello[\"]?\n    target: [\"]?\/tmp[\"]?/
         | 
| 68 | 
            +
                end
         | 
| 69 | 
            +
             | 
| 70 | 
            +
                it "should have a valid script in provision stage" do
         | 
| 71 | 
            +
                  @result.should match /provision:\n  - remote_path: [\"]?\/tmp\/hello\/jetty.sh[\"]?\n    args: ''/
         | 
| 72 | 
            +
                end
         | 
| 73 | 
            +
             | 
| 74 | 
            +
                it "should have a valid script in provision stage with template value" do
         | 
| 75 | 
            +
                  @result.should match /- remote_path: [\"]?\/tmp\/test.sh 100[\"]?\n/
         | 
| 76 | 
            +
                end
         | 
| 77 | 
            +
             | 
| 78 | 
            +
                it "should have a valid script in stop stage with template value" do
         | 
| 79 | 
            +
                  @result.should match /stop:\n  - remote_path: [\"]?\/tmp\/stop.sh 100[\"]?\n/
         | 
| 80 | 
            +
                end
         | 
| 81 | 
            +
              end
         | 
| 82 | 
            +
             | 
| 83 | 
            +
            end
         | 
    
        data/spec/configuration_spec.rb
    CHANGED
    
    | @@ -110,7 +110,7 @@ describe Dployr::Configuration do | |
| 110 110 | 
             
                      key_path: "path/to/key.pem"
         | 
| 111 111 | 
             
                    },
         | 
| 112 112 | 
             
                    scripts: [
         | 
| 113 | 
            -
                      { path: "setup.sh", args: ["--id ${index}"], remote: true }
         | 
| 113 | 
            +
                      { path: "setup.sh", args: ["--id ${index}", "--name ${name}"], remote: true }
         | 
| 114 114 | 
             
                    ],
         | 
| 115 115 | 
             
                    providers: {
         | 
| 116 116 | 
             
                      aws: {
         | 
| @@ -327,6 +327,14 @@ describe Dployr::Configuration do | |
| 327 327 | 
             
                          zeus[:providers][:aws][:scripts][1][:path].should eql "setup.sh"
         | 
| 328 328 | 
             
                        end
         | 
| 329 329 |  | 
| 330 | 
            +
                        it "should have a valid number of arguments" do
         | 
| 331 | 
            +
                          zeus[:providers][:aws][:scripts][1][:args].should have(2).items
         | 
| 332 | 
            +
                        end
         | 
| 333 | 
            +
             | 
| 334 | 
            +
                        it "should have a remote property" do
         | 
| 335 | 
            +
                          zeus[:providers][:aws][:scripts][1][:remote].should eql true
         | 
| 336 | 
            +
                        end
         | 
| 337 | 
            +
             | 
| 330 338 | 
             
                        it "should have a valid path" do
         | 
| 331 339 | 
             
                          zeus[:providers][:aws][:scripts][2][:path].should eql "router.sh"
         | 
| 332 340 | 
             
                        end
         | 
| @@ -335,6 +343,10 @@ describe Dployr::Configuration do | |
| 335 343 | 
             
                          it "should replace the argument with the instance name" do
         | 
| 336 344 | 
             
                            zeus[:providers][:aws][:scripts][2][:args][0].should eql "zeus"
         | 
| 337 345 | 
             
                          end
         | 
| 346 | 
            +
             | 
| 347 | 
            +
                          it "should replace the name context value" do
         | 
| 348 | 
            +
                            zeus[:providers][:aws][:scripts][1][:args][1].should eql "--name zeus"
         | 
| 349 | 
            +
                          end
         | 
| 338 350 | 
             
                        end
         | 
| 339 351 | 
             
                      end
         | 
| 340 352 |  | 
| @@ -471,7 +483,7 @@ describe Dployr::Configuration do | |
| 471 483 | 
             
                      end
         | 
| 472 484 |  | 
| 473 485 | 
             
                      it "should have a valid name" do
         | 
| 474 | 
            -
                        @config[:attributes][:name].should eql " | 
| 486 | 
            +
                        @config[:attributes][:name].should eql "hera"
         | 
| 475 487 | 
             
                      end
         | 
| 476 488 | 
             
                    end
         | 
| 477 489 |  | 
| @@ -0,0 +1,41 @@ | |
| 1 | 
            +
            default:
         | 
| 2 | 
            +
              attributes:
         | 
| 3 | 
            +
                index: 1
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            dployr:
         | 
| 6 | 
            +
              attributes:
         | 
| 7 | 
            +
                name: dployr-test
         | 
| 8 | 
            +
                prefix: dev
         | 
| 9 | 
            +
                private_key_path: ~/pems/innotechdev.pem
         | 
| 10 | 
            +
                username: innotechdev
         | 
| 11 | 
            +
              scripts:
         | 
| 12 | 
            +
                pre-provision:
         | 
| 13 | 
            +
                  - source: ./hello
         | 
| 14 | 
            +
                    target: /tmp
         | 
| 15 | 
            +
                provision:
         | 
| 16 | 
            +
                  - remote_path: /tmp/hello/jetty.sh
         | 
| 17 | 
            +
                    args: ""
         | 
| 18 | 
            +
                  - remote_path: "/tmp/test.sh %{index}"
         | 
| 19 | 
            +
              providers:
         | 
| 20 | 
            +
                aws:
         | 
| 21 | 
            +
                  attributes:
         | 
| 22 | 
            +
                    instance_type: t1.micro
         | 
| 23 | 
            +
                  regions:
         | 
| 24 | 
            +
                    sa-east-1a:
         | 
| 25 | 
            +
                      attributes:
         | 
| 26 | 
            +
                        ami: ami-370daf2a # centos-base-v7
         | 
| 27 | 
            +
                        keypair: vagrant-aws-saopaulo
         | 
| 28 | 
            +
                        security_groups:
         | 
| 29 | 
            +
                          - sg-3cf3e45e # lib_aws_saopaulo
         | 
| 30 | 
            +
                        subnet_id: subnet-1eebe07c
         | 
| 31 | 
            +
                      scripts:
         | 
| 32 | 
            +
                        stop:
         | 
| 33 | 
            +
                          - remote_path: "/tmp/stop.sh %{index}"
         | 
| 34 | 
            +
                gce:
         | 
| 35 | 
            +
                  attributes:
         | 
| 36 | 
            +
                    instance_type: f1-micro
         | 
| 37 | 
            +
                  regions:
         | 
| 38 | 
            +
                    europe-west1-a:
         | 
| 39 | 
            +
                      attributes:
         | 
| 40 | 
            +
                        image_name: centos-base-v7 # centos-base-v7
         | 
| 41 | 
            +
                        network: liberty-gce
         | 
| @@ -1,4 +1,4 @@ | |
| 1 | 
            -
            german- | 
| 1 | 
            +
            german-template:
         | 
| 2 2 | 
             
              attributes:
         | 
| 3 3 | 
             
                name: "german-dployr"
         | 
| 4 4 | 
             
                prefix: dev
         | 
| @@ -9,16 +9,8 @@ german-dployr: | |
| 9 9 | 
             
                  - source: ./hello
         | 
| 10 10 | 
             
                    target: /tmp
         | 
| 11 11 | 
             
                provision:
         | 
| 12 | 
            -
                   | 
| 13 | 
            -
                     | 
| 14 | 
            -
                    # remote_path: "/tmp/hello/hello.sh"
         | 
| 15 | 
            -
                  # -
         | 
| 16 | 
            -
                    # args: ""
         | 
| 17 | 
            -
                    # local_path: "ls -l /tmp/"
         | 
| 18 | 
            -
                  # - args: ""
         | 
| 19 | 
            -
                    # remote_path: "sudo service jetty restart"
         | 
| 20 | 
            -
                  - args: ""
         | 
| 21 | 
            -
                    remote_path: "/tmp/hello/jetty.sh"
         | 
| 12 | 
            +
                  - remote_path: /tmp/hello/jetty.sh
         | 
| 13 | 
            +
                    args: ""
         | 
| 22 14 | 
             
              providers:
         | 
| 23 15 | 
             
                aws:
         | 
| 24 16 | 
             
                  attributes:
         | 
| @@ -31,6 +23,7 @@ german-dployr: | |
| 31 23 | 
             
                        security_groups:
         | 
| 32 24 | 
             
                          - sg-3cf3e45e # lib_aws_saopaulo
         | 
| 33 25 | 
             
                        subnet_id: subnet-1eebe07c
         | 
| 26 | 
            +
                        #public_ip: new
         | 
| 34 27 | 
             
                gce:
         | 
| 35 28 | 
             
                  attributes:
         | 
| 36 29 | 
             
                    instance_type: f1-micro
         | 
| @@ -39,3 +32,4 @@ german-dployr: | |
| 39 32 | 
             
                      attributes:
         | 
| 40 33 | 
             
                        image_name: centos-base-v7 # centos-base-v7
         | 
| 41 34 | 
             
                        network: liberty-gce
         | 
| 35 | 
            +
                        #public_ip: 146.148.27.56
         | 
| @@ -0,0 +1,18 @@ | |
| 1 | 
            +
            #!/bin/sh
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            createExecUser() {
         | 
| 4 | 
            +
            	USERNAME=$1
         | 
| 5 | 
            +
            	shift
         | 
| 6 | 
            +
            	DIRECTORIES=$@
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            	NOLOGIN_PATH=$(which nologin)
         | 
| 9 | 
            +
            	sudo useradd -M -U -s $NOLOGIN_PATH $USERNAME
         | 
| 10 | 
            +
            	for dir in $DIRECTORIES; do
         | 
| 11 | 
            +
            		if [ ! -d $dir ]
         | 
| 12 | 
            +
            		then
         | 
| 13 | 
            +
            			sudo mkdir $dir
         | 
| 14 | 
            +
            		fi
         | 
| 15 | 
            +
            		echo "Change owner to $dir ..."
         | 
| 16 | 
            +
            		sudo chown -R ${USERNAME}:${USERNAME} $dir
         | 
| 17 | 
            +
            	done
         | 
| 18 | 
            +
            }
         | 
| @@ -0,0 +1,562 @@ | |
| 1 | 
            +
            #!/usr/bin/env bash  
         | 
| 2 | 
            +
            #
         | 
| 3 | 
            +
            # Startup script for jetty under *nix systems (it works under NT/cygwin too).
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            ##################################################
         | 
| 6 | 
            +
            # Set the name which is used by other variables.
         | 
| 7 | 
            +
            # Defaults to the file name without extension.
         | 
| 8 | 
            +
            ##################################################
         | 
| 9 | 
            +
            NAME=$(echo $(basename $0) | sed -e 's/^[SK][0-9]+//' -e 's/\.sh$//')
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            # To get the service to restart correctly on reboot, uncomment below (3 lines):
         | 
| 12 | 
            +
            # ========================
         | 
| 13 | 
            +
            # chkconfig: 3 99 99
         | 
| 14 | 
            +
            # description: Jetty 9 webserver
         | 
| 15 | 
            +
            # processname: jetty
         | 
| 16 | 
            +
            # ========================
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            # Configuration files
         | 
| 19 | 
            +
            #
         | 
| 20 | 
            +
            # /etc/default/$NAME
         | 
| 21 | 
            +
            #   If it exists, this is read at the start of script. It may perform any 
         | 
| 22 | 
            +
            #   sequence of shell commands, like setting relevant environment variables.
         | 
| 23 | 
            +
            #
         | 
| 24 | 
            +
            # $HOME/.$NAMErc (e.g. $HOME/.jettyrc)
         | 
| 25 | 
            +
            #   If it exists, this is read at the start of script. It may perform any 
         | 
| 26 | 
            +
            #   sequence of shell commands, like setting relevant environment variables.
         | 
| 27 | 
            +
            #
         | 
| 28 | 
            +
            # /etc/$NAME.conf
         | 
| 29 | 
            +
            #   If found, and no configurations were given on the command line,
         | 
| 30 | 
            +
            #   the file will be used as this script's configuration. 
         | 
| 31 | 
            +
            #   Each line in the file may contain:
         | 
| 32 | 
            +
            #     - A comment denoted by the pound (#) sign as first non-blank character.
         | 
| 33 | 
            +
            #     - The path to a regular file, which will be passed to jetty as a 
         | 
| 34 | 
            +
            #       config.xml file.
         | 
| 35 | 
            +
            #     - The path to a directory. Each *.xml file in the directory will be
         | 
| 36 | 
            +
            #       passed to jetty as a config.xml file.
         | 
| 37 | 
            +
            #     - All other lines will be passed, as-is to the start.jar
         | 
| 38 | 
            +
            #
         | 
| 39 | 
            +
            #   The files will be checked for existence before being passed to jetty.
         | 
| 40 | 
            +
            #
         | 
| 41 | 
            +
            # Configuration variables
         | 
| 42 | 
            +
            #
         | 
| 43 | 
            +
            # JAVA
         | 
| 44 | 
            +
            #   Command to invoke Java. If not set, java (from the PATH) will be used.
         | 
| 45 | 
            +
            #
         | 
| 46 | 
            +
            # JAVA_OPTIONS
         | 
| 47 | 
            +
            #   Extra options to pass to the JVM
         | 
| 48 | 
            +
            #
         | 
| 49 | 
            +
            # JETTY_HOME
         | 
| 50 | 
            +
            #   Where Jetty is installed. If not set, the script will try go
         | 
| 51 | 
            +
            #   guess it by first looking at the invocation path for the script,
         | 
| 52 | 
            +
            #   and then by looking in standard locations as $HOME/opt/jetty
         | 
| 53 | 
            +
            #   and /opt/jetty. The java system property "jetty.home" will be
         | 
| 54 | 
            +
            #   set to this value for use by configure.xml files, f.e.:
         | 
| 55 | 
            +
            #
         | 
| 56 | 
            +
            #    <Arg><Property name="jetty.home" default="."/>/webapps/jetty.war</Arg>
         | 
| 57 | 
            +
            #
         | 
| 58 | 
            +
            # JETTY_BASE
         | 
| 59 | 
            +
            #   Where your Jetty base directory is.  If not set, the value from
         | 
| 60 | 
            +
            #   $JETTY_HOME will be used.
         | 
| 61 | 
            +
            #
         | 
| 62 | 
            +
            # JETTY_RUN
         | 
| 63 | 
            +
            #   Where the $NAME.pid file should be stored. It defaults to the
         | 
| 64 | 
            +
            #   first available of /var/run, /usr/var/run, JETTY_BASE and /tmp
         | 
| 65 | 
            +
            #   if not set.
         | 
| 66 | 
            +
            #  
         | 
| 67 | 
            +
            # JETTY_PID
         | 
| 68 | 
            +
            #   The Jetty PID file, defaults to $JETTY_RUN/$NAME.pid
         | 
| 69 | 
            +
            #   
         | 
| 70 | 
            +
            # JETTY_ARGS
         | 
| 71 | 
            +
            #   The default arguments to pass to jetty.
         | 
| 72 | 
            +
            #   For example
         | 
| 73 | 
            +
            #      JETTY_ARGS=jetty.host=0.0.0.0 jetty.port=8080 jetty.spdy.port=8443 jetty.secure.port=443
         | 
| 74 | 
            +
            #
         | 
| 75 | 
            +
            # JETTY_USER
         | 
| 76 | 
            +
            #   if set, then used as a username to run the server as
         | 
| 77 | 
            +
             | 
| 78 | 
            +
            JETTY_HOME=/opt/jetty
         | 
| 79 | 
            +
            JETTY_USER=jetty
         | 
| 80 | 
            +
            JETTY_PORT=8080
         | 
| 81 | 
            +
            JETTY_LOGS=/var/log/jetty/
         | 
| 82 | 
            +
             | 
| 83 | 
            +
            usage()
         | 
| 84 | 
            +
            {
         | 
| 85 | 
            +
                echo "Usage: ${0##*/} [-d] {start|stop|run|restart|check|supervise} [ CONFIGS ... ] "
         | 
| 86 | 
            +
                exit 1
         | 
| 87 | 
            +
            }
         | 
| 88 | 
            +
             | 
| 89 | 
            +
            [ $# -gt 0 ] || usage
         | 
| 90 | 
            +
             | 
| 91 | 
            +
             | 
| 92 | 
            +
            ##################################################
         | 
| 93 | 
            +
            # Some utility functions
         | 
| 94 | 
            +
            ##################################################
         | 
| 95 | 
            +
            findDirectory()
         | 
| 96 | 
            +
            {
         | 
| 97 | 
            +
              local L OP=$1
         | 
| 98 | 
            +
              shift
         | 
| 99 | 
            +
              for L in "$@"; do
         | 
| 100 | 
            +
                [ "$OP" "$L" ] || continue 
         | 
| 101 | 
            +
                printf %s "$L"
         | 
| 102 | 
            +
                break
         | 
| 103 | 
            +
              done 
         | 
| 104 | 
            +
            }
         | 
| 105 | 
            +
             | 
| 106 | 
            +
            running()
         | 
| 107 | 
            +
            {
         | 
| 108 | 
            +
              local PID=$(cat "$1" 2>/dev/null) || return 1
         | 
| 109 | 
            +
              kill -0 "$PID" 2>/dev/null
         | 
| 110 | 
            +
            }
         | 
| 111 | 
            +
             | 
| 112 | 
            +
            started()
         | 
| 113 | 
            +
            {
         | 
| 114 | 
            +
              # wait for 60s to see "STARTED" in PID file, needs jetty-started.xml as argument
         | 
| 115 | 
            +
              for T in 1 2 3 4 5 6 7 9 10 11 12 13 14 15 
         | 
| 116 | 
            +
              do
         | 
| 117 | 
            +
                sleep 4
         | 
| 118 | 
            +
                [ -z "$(grep STARTED $1 2>/dev/null)" ] || return 0
         | 
| 119 | 
            +
                [ -z "$(grep STOPPED $1 2>/dev/null)" ] || return 1
         | 
| 120 | 
            +
                [ -z "$(grep FAILED $1 2>/dev/null)" ] || return 1
         | 
| 121 | 
            +
                local PID=$(cat "$2" 2>/dev/null) || return 1
         | 
| 122 | 
            +
                kill -0 "$PID" 2>/dev/null || return 1
         | 
| 123 | 
            +
                echo -n ". "
         | 
| 124 | 
            +
              done
         | 
| 125 | 
            +
             | 
| 126 | 
            +
              return 1;
         | 
| 127 | 
            +
            }
         | 
| 128 | 
            +
             | 
| 129 | 
            +
             | 
| 130 | 
            +
            readConfig()
         | 
| 131 | 
            +
            {
         | 
| 132 | 
            +
              (( DEBUG )) && echo "Reading $1.."
         | 
| 133 | 
            +
              source "$1"
         | 
| 134 | 
            +
            }
         | 
| 135 | 
            +
             | 
| 136 | 
            +
             | 
| 137 | 
            +
             | 
| 138 | 
            +
            ##################################################
         | 
| 139 | 
            +
            # Get the action & configs
         | 
| 140 | 
            +
            ##################################################
         | 
| 141 | 
            +
            CONFIGS=()
         | 
| 142 | 
            +
            NO_START=0
         | 
| 143 | 
            +
            DEBUG=0
         | 
| 144 | 
            +
             | 
| 145 | 
            +
            while [[ $1 = -* ]]; do
         | 
| 146 | 
            +
              case $1 in
         | 
| 147 | 
            +
                -d) DEBUG=1 ;;
         | 
| 148 | 
            +
              esac
         | 
| 149 | 
            +
              shift
         | 
| 150 | 
            +
            done
         | 
| 151 | 
            +
            ACTION=$1
         | 
| 152 | 
            +
            shift
         | 
| 153 | 
            +
             | 
| 154 | 
            +
            ##################################################
         | 
| 155 | 
            +
            # Read any configuration files
         | 
| 156 | 
            +
            ##################################################
         | 
| 157 | 
            +
            ETC=/etc
         | 
| 158 | 
            +
            if [ $UID != 0 ]
         | 
| 159 | 
            +
            then 
         | 
| 160 | 
            +
              ETC=$HOME/etc
         | 
| 161 | 
            +
            fi
         | 
| 162 | 
            +
             | 
| 163 | 
            +
            for CONFIG in $ETC/default/${NAME}{,9} $HOME/.${NAME}rc; do
         | 
| 164 | 
            +
              if [ -f "$CONFIG" ] ; then 
         | 
| 165 | 
            +
                readConfig "$CONFIG"
         | 
| 166 | 
            +
              fi
         | 
| 167 | 
            +
            done
         | 
| 168 | 
            +
             | 
| 169 | 
            +
             | 
| 170 | 
            +
            ##################################################
         | 
| 171 | 
            +
            # Set tmp if not already set.
         | 
| 172 | 
            +
            ##################################################
         | 
| 173 | 
            +
            TMPDIR=${TMPDIR:-/tmp}
         | 
| 174 | 
            +
             | 
| 175 | 
            +
            ##################################################
         | 
| 176 | 
            +
            # Jetty's hallmark
         | 
| 177 | 
            +
            ##################################################
         | 
| 178 | 
            +
            JETTY_INSTALL_TRACE_FILE="start.jar"
         | 
| 179 | 
            +
             | 
| 180 | 
            +
             | 
| 181 | 
            +
            ##################################################
         | 
| 182 | 
            +
            # Try to determine JETTY_HOME if not set
         | 
| 183 | 
            +
            ##################################################
         | 
| 184 | 
            +
            if [ -z "$JETTY_HOME" ] 
         | 
| 185 | 
            +
            then
         | 
| 186 | 
            +
              JETTY_SH=$0
         | 
| 187 | 
            +
              case "$JETTY_SH" in
         | 
| 188 | 
            +
                /*)     JETTY_HOME=${JETTY_SH%/*/*} ;;
         | 
| 189 | 
            +
                ./*/*)  JETTY_HOME=${JETTY_SH%/*/*} ;;
         | 
| 190 | 
            +
                ./*)    JETTY_HOME=.. ;;
         | 
| 191 | 
            +
                */*/*)  JETTY_HOME=./${JETTY_SH%/*/*} ;;
         | 
| 192 | 
            +
                */*)    JETTY_HOME=. ;;
         | 
| 193 | 
            +
                *)      JETTY_HOME=.. ;;
         | 
| 194 | 
            +
              esac
         | 
| 195 | 
            +
             | 
| 196 | 
            +
              if [ ! -f "$JETTY_HOME/$JETTY_INSTALL_TRACE_FILE" ]
         | 
| 197 | 
            +
              then 
         | 
| 198 | 
            +
                JETTY_HOME=
         | 
| 199 | 
            +
              fi
         | 
| 200 | 
            +
            fi
         | 
| 201 | 
            +
             | 
| 202 | 
            +
             | 
| 203 | 
            +
            ##################################################
         | 
| 204 | 
            +
            # No JETTY_HOME yet? We're out of luck!
         | 
| 205 | 
            +
            ##################################################
         | 
| 206 | 
            +
            if [ -z "$JETTY_HOME" ]; then
         | 
| 207 | 
            +
              echo "** ERROR: JETTY_HOME not set, you need to set it or install in a standard location" 
         | 
| 208 | 
            +
              exit 1
         | 
| 209 | 
            +
            fi
         | 
| 210 | 
            +
             | 
| 211 | 
            +
            cd "$JETTY_HOME"
         | 
| 212 | 
            +
            JETTY_HOME=$PWD
         | 
| 213 | 
            +
             | 
| 214 | 
            +
             | 
| 215 | 
            +
            ##################################################
         | 
| 216 | 
            +
            # Set JETTY_BASE 
         | 
| 217 | 
            +
            ##################################################
         | 
| 218 | 
            +
            if [ -z "$JETTY_BASE" ]; then
         | 
| 219 | 
            +
              JETTY_BASE=$JETTY_HOME
         | 
| 220 | 
            +
            fi
         | 
| 221 | 
            +
             | 
| 222 | 
            +
            cd "$JETTY_BASE"
         | 
| 223 | 
            +
            JETTY_BASE=$PWD
         | 
| 224 | 
            +
             | 
| 225 | 
            +
             | 
| 226 | 
            +
            #####################################################
         | 
| 227 | 
            +
            # Check that jetty is where we think it is
         | 
| 228 | 
            +
            #####################################################
         | 
| 229 | 
            +
            if [ ! -r "$JETTY_HOME/$JETTY_INSTALL_TRACE_FILE" ] 
         | 
| 230 | 
            +
            then
         | 
| 231 | 
            +
              echo "** ERROR: Oops! Jetty doesn't appear to be installed in $JETTY_HOME"
         | 
| 232 | 
            +
              echo "** ERROR:  $JETTY_HOME/$JETTY_INSTALL_TRACE_FILE is not readable!"
         | 
| 233 | 
            +
              exit 1
         | 
| 234 | 
            +
            fi
         | 
| 235 | 
            +
             | 
| 236 | 
            +
            ##################################################
         | 
| 237 | 
            +
            # Try to find this script's configuration file,
         | 
| 238 | 
            +
            # but only if no configurations were given on the
         | 
| 239 | 
            +
            # command line.
         | 
| 240 | 
            +
            ##################################################
         | 
| 241 | 
            +
            if [ -z "$JETTY_CONF" ] 
         | 
| 242 | 
            +
            then
         | 
| 243 | 
            +
              if [ -f $ETC/${NAME}.conf ]
         | 
| 244 | 
            +
              then
         | 
| 245 | 
            +
                JETTY_CONF=$ETC/${NAME}.conf
         | 
| 246 | 
            +
              elif [ -f "$JETTY_BASE/etc/jetty.conf" ]
         | 
| 247 | 
            +
              then
         | 
| 248 | 
            +
                JETTY_CONF=$JETTY_BASE/etc/jetty.conf
         | 
| 249 | 
            +
              elif [ -f "$JETTY_HOME/etc/jetty.conf" ]
         | 
| 250 | 
            +
              then
         | 
| 251 | 
            +
                JETTY_CONF=$JETTY_HOME/etc/jetty.conf
         | 
| 252 | 
            +
              fi
         | 
| 253 | 
            +
            fi
         | 
| 254 | 
            +
             | 
| 255 | 
            +
            ##################################################
         | 
| 256 | 
            +
            # Get the list of config.xml files from jetty.conf
         | 
| 257 | 
            +
            ##################################################
         | 
| 258 | 
            +
            if [ -f "$JETTY_CONF" ] && [ -r "$JETTY_CONF" ] 
         | 
| 259 | 
            +
            then
         | 
| 260 | 
            +
              while read -r CONF
         | 
| 261 | 
            +
              do
         | 
| 262 | 
            +
                if expr "$CONF" : '#' >/dev/null ; then
         | 
| 263 | 
            +
                  continue
         | 
| 264 | 
            +
                fi
         | 
| 265 | 
            +
             | 
| 266 | 
            +
                if [ -d "$CONF" ] 
         | 
| 267 | 
            +
                then
         | 
| 268 | 
            +
                  # assume it's a directory with configure.xml files
         | 
| 269 | 
            +
                  # for example: /etc/jetty.d/
         | 
| 270 | 
            +
                  # sort the files before adding them to the list of JETTY_ARGS
         | 
| 271 | 
            +
                  for XMLFILE in "$CONF/"*.xml
         | 
| 272 | 
            +
                  do
         | 
| 273 | 
            +
                    if [ -r "$XMLFILE" ] && [ -f "$XMLFILE" ] 
         | 
| 274 | 
            +
                    then
         | 
| 275 | 
            +
                      JETTY_ARGS+=("$XMLFILE")
         | 
| 276 | 
            +
                    else
         | 
| 277 | 
            +
                      echo "** WARNING: Cannot read '$XMLFILE' specified in '$JETTY_CONF'" 
         | 
| 278 | 
            +
                    fi
         | 
| 279 | 
            +
                  done
         | 
| 280 | 
            +
                else
         | 
| 281 | 
            +
                  # assume it's a command line parameter (let start.jar deal with its validity)
         | 
| 282 | 
            +
                  JETTY_ARGS+=("$CONF")
         | 
| 283 | 
            +
                fi
         | 
| 284 | 
            +
              done < "$JETTY_CONF"
         | 
| 285 | 
            +
            fi
         | 
| 286 | 
            +
             | 
| 287 | 
            +
            #####################################################
         | 
| 288 | 
            +
            # Find a location for the pid file
         | 
| 289 | 
            +
            #####################################################
         | 
| 290 | 
            +
            if [ -z "$JETTY_RUN" ] 
         | 
| 291 | 
            +
            then
         | 
| 292 | 
            +
              JETTY_RUN=$(findDirectory -w /var/run /usr/var/run $JETTY_BASE /tmp)
         | 
| 293 | 
            +
            fi
         | 
| 294 | 
            +
             | 
| 295 | 
            +
            #####################################################
         | 
| 296 | 
            +
            # Find a pid and state file
         | 
| 297 | 
            +
            #####################################################
         | 
| 298 | 
            +
            if [ -z "$JETTY_PID" ] 
         | 
| 299 | 
            +
            then
         | 
| 300 | 
            +
              JETTY_PID="$JETTY_RUN/${NAME}.pid"
         | 
| 301 | 
            +
            fi
         | 
| 302 | 
            +
             | 
| 303 | 
            +
            if [ -z "$JETTY_STATE" ] 
         | 
| 304 | 
            +
            then
         | 
| 305 | 
            +
              JETTY_STATE=$JETTY_BASE/${NAME}.state
         | 
| 306 | 
            +
            fi
         | 
| 307 | 
            +
            JAVA_OPTIONS+=("-Djetty.state=$JETTY_STATE")
         | 
| 308 | 
            +
            rm -f $JETTY_STATE
         | 
| 309 | 
            +
             | 
| 310 | 
            +
            ##################################################
         | 
| 311 | 
            +
            # Setup JAVA if unset
         | 
| 312 | 
            +
            ##################################################
         | 
| 313 | 
            +
            if [ -z "$JAVA" ]
         | 
| 314 | 
            +
            then
         | 
| 315 | 
            +
              JAVA=$(which java)
         | 
| 316 | 
            +
            fi
         | 
| 317 | 
            +
             | 
| 318 | 
            +
            if [ -z "$JAVA" ]
         | 
| 319 | 
            +
            then
         | 
| 320 | 
            +
              echo "Cannot find a Java JDK. Please set either set JAVA or put java (>=1.5) in your PATH." 2>&2
         | 
| 321 | 
            +
              exit 1
         | 
| 322 | 
            +
            fi
         | 
| 323 | 
            +
             | 
| 324 | 
            +
            #####################################################
         | 
| 325 | 
            +
            # See if JETTY_LOGS is defined
         | 
| 326 | 
            +
            #####################################################
         | 
| 327 | 
            +
            if [ -z "$JETTY_LOGS" ] && [ -d $JETTY_BASE/logs ] 
         | 
| 328 | 
            +
            then
         | 
| 329 | 
            +
              JETTY_LOGS=$JETTY_BASE/logs
         | 
| 330 | 
            +
            fi
         | 
| 331 | 
            +
            if [ -z "$JETTY_LOGS" ] && [ -d $JETTY_HOME/logs ] 
         | 
| 332 | 
            +
            then
         | 
| 333 | 
            +
              JETTY_LOGS=$JETTY_HOME/logs
         | 
| 334 | 
            +
            fi
         | 
| 335 | 
            +
            if [ "$JETTY_LOGS" ]
         | 
| 336 | 
            +
            then
         | 
| 337 | 
            +
              JAVA_OPTIONS+=("-Djetty.logs=$JETTY_LOGS")
         | 
| 338 | 
            +
            fi
         | 
| 339 | 
            +
             | 
| 340 | 
            +
            #####################################################
         | 
| 341 | 
            +
            # Are we running on Windows? Could be, with Cygwin/NT.
         | 
| 342 | 
            +
            #####################################################
         | 
| 343 | 
            +
            case "`uname`" in
         | 
| 344 | 
            +
            CYGWIN*) PATH_SEPARATOR=";";;
         | 
| 345 | 
            +
            *) PATH_SEPARATOR=":";;
         | 
| 346 | 
            +
            esac
         | 
| 347 | 
            +
             | 
| 348 | 
            +
             | 
| 349 | 
            +
            #####################################################
         | 
| 350 | 
            +
            # Add jetty properties to Java VM options.
         | 
| 351 | 
            +
            #####################################################
         | 
| 352 | 
            +
            JAVA_OPTIONS+=("-Djetty.home=$JETTY_HOME" "-Djetty.base=$JETTY_BASE" "-Djava.io.tmpdir=$TMPDIR")
         | 
| 353 | 
            +
             | 
| 354 | 
            +
            #####################################################
         | 
| 355 | 
            +
            # This is how the Jetty server will be started
         | 
| 356 | 
            +
            #####################################################
         | 
| 357 | 
            +
             | 
| 358 | 
            +
            JETTY_START=$JETTY_HOME/start.jar
         | 
| 359 | 
            +
            START_INI=$JETTY_BASE/start.ini
         | 
| 360 | 
            +
            if [ ! -f "$START_INI" ]
         | 
| 361 | 
            +
            then
         | 
| 362 | 
            +
              echo "Cannot find a start.ini in your JETTY_BASE directory: $JETTY_BASE" 2>&2
         | 
| 363 | 
            +
              exit 1
         | 
| 364 | 
            +
            fi
         | 
| 365 | 
            +
             | 
| 366 | 
            +
            RUN_ARGS=(${JAVA_OPTIONS[@]} -jar "$JETTY_START" ${JETTY_ARGS[*]})
         | 
| 367 | 
            +
            RUN_CMD=("$JAVA" ${RUN_ARGS[@]})
         | 
| 368 | 
            +
             | 
| 369 | 
            +
            #####################################################
         | 
| 370 | 
            +
            # Comment these out after you're happy with what 
         | 
| 371 | 
            +
            # the script is doing.
         | 
| 372 | 
            +
            #####################################################
         | 
| 373 | 
            +
            if (( DEBUG ))
         | 
| 374 | 
            +
            then
         | 
| 375 | 
            +
              echo "START_INI      =  $START_INI"
         | 
| 376 | 
            +
              echo "JETTY_HOME     =  $JETTY_HOME"
         | 
| 377 | 
            +
              echo "JETTY_BASE     =  $JETTY_BASE"
         | 
| 378 | 
            +
              echo "JETTY_CONF     =  $JETTY_CONF"
         | 
| 379 | 
            +
              echo "JETTY_PID      =  $JETTY_PID"
         | 
| 380 | 
            +
              echo "JETTY_START    =  $JETTY_START"
         | 
| 381 | 
            +
              echo "JETTY_ARGS     =  ${JETTY_ARGS[*]}"
         | 
| 382 | 
            +
              echo "JAVA_OPTIONS   =  ${JAVA_OPTIONS[*]}"
         | 
| 383 | 
            +
              echo "JAVA           =  $JAVA"
         | 
| 384 | 
            +
              echo "RUN_CMD        =  ${RUN_CMD}"
         | 
| 385 | 
            +
            fi
         | 
| 386 | 
            +
             | 
| 387 | 
            +
            ##################################################
         | 
| 388 | 
            +
            # Do the action
         | 
| 389 | 
            +
            ##################################################
         | 
| 390 | 
            +
            case "$ACTION" in
         | 
| 391 | 
            +
              start)
         | 
| 392 | 
            +
                echo -n "Starting Jetty: "
         | 
| 393 | 
            +
             | 
| 394 | 
            +
                if (( NO_START )); then 
         | 
| 395 | 
            +
                  echo "Not starting ${NAME} - NO_START=1";
         | 
| 396 | 
            +
                  exit
         | 
| 397 | 
            +
                fi
         | 
| 398 | 
            +
             | 
| 399 | 
            +
                if [ $UID -eq 0 ] && type start-stop-daemon > /dev/null 2>&1 
         | 
| 400 | 
            +
                then
         | 
| 401 | 
            +
                  unset CH_USER
         | 
| 402 | 
            +
                  if [ -n "$JETTY_USER" ]
         | 
| 403 | 
            +
                  then
         | 
| 404 | 
            +
                    CH_USER="-c$JETTY_USER"
         | 
| 405 | 
            +
                  fi
         | 
| 406 | 
            +
             | 
| 407 | 
            +
                  start-stop-daemon -S -p"$JETTY_PID" $CH_USER -d"$JETTY_HOME" -b -m -a "$JAVA" -- "${RUN_ARGS[@]}" --daemon
         | 
| 408 | 
            +
             | 
| 409 | 
            +
                else
         | 
| 410 | 
            +
             | 
| 411 | 
            +
                  if [ -f "$JETTY_PID" ]
         | 
| 412 | 
            +
                  then
         | 
| 413 | 
            +
                    if running $JETTY_PID
         | 
| 414 | 
            +
                    then
         | 
| 415 | 
            +
                      echo "Already Running!"
         | 
| 416 | 
            +
                      exit 1
         | 
| 417 | 
            +
                    else
         | 
| 418 | 
            +
                      # dead pid file - remove
         | 
| 419 | 
            +
                      rm -f "$JETTY_PID"
         | 
| 420 | 
            +
                    fi
         | 
| 421 | 
            +
                  fi
         | 
| 422 | 
            +
             | 
| 423 | 
            +
                  if [ "$JETTY_USER" ] 
         | 
| 424 | 
            +
                  then
         | 
| 425 | 
            +
                    touch "$JETTY_PID"
         | 
| 426 | 
            +
                    chown "$JETTY_USER" "$JETTY_PID"
         | 
| 427 | 
            +
                    # FIXME: Broken solution: wordsplitting, pathname expansion, arbitrary command execution, etc.
         | 
| 428 | 
            +
                    su - "$JETTY_USER" -c "
         | 
| 429 | 
            +
                      exec ${RUN_CMD[*]} --daemon &
         | 
| 430 | 
            +
                      disown \$!
         | 
| 431 | 
            +
                      echo \$! > '$JETTY_PID'"
         | 
| 432 | 
            +
                  else
         | 
| 433 | 
            +
                    "${RUN_CMD[@]}" &
         | 
| 434 | 
            +
                    disown $!
         | 
| 435 | 
            +
                    echo $! > "$JETTY_PID"
         | 
| 436 | 
            +
                  fi
         | 
| 437 | 
            +
             | 
| 438 | 
            +
                fi
         | 
| 439 | 
            +
             | 
| 440 | 
            +
                if expr "${JETTY_ARGS[*]}" : '.*jetty-started.xml.*' >/dev/null
         | 
| 441 | 
            +
                then
         | 
| 442 | 
            +
                  if started "$JETTY_STATE" "$JETTY_PID"
         | 
| 443 | 
            +
                  then
         | 
| 444 | 
            +
                    echo "OK `date`"
         | 
| 445 | 
            +
                  else
         | 
| 446 | 
            +
                    echo "FAILED `date`"
         | 
| 447 | 
            +
                  fi
         | 
| 448 | 
            +
                else
         | 
| 449 | 
            +
                  echo "ok `date`"
         | 
| 450 | 
            +
                fi
         | 
| 451 | 
            +
             | 
| 452 | 
            +
                ;;
         | 
| 453 | 
            +
             | 
| 454 | 
            +
              stop)
         | 
| 455 | 
            +
                echo -n "Stopping Jetty: "
         | 
| 456 | 
            +
                if [ $UID -eq 0 ] && type start-stop-daemon > /dev/null 2>&1; then
         | 
| 457 | 
            +
                  start-stop-daemon -K -p"$JETTY_PID" -d"$JETTY_HOME" -a "$JAVA" -s HUP
         | 
| 458 | 
            +
                  
         | 
| 459 | 
            +
                  TIMEOUT=30
         | 
| 460 | 
            +
                  while running "$JETTY_PID"; do
         | 
| 461 | 
            +
                    if (( TIMEOUT-- == 0 )); then
         | 
| 462 | 
            +
                      start-stop-daemon -K -p"$JETTY_PID" -d"$JETTY_HOME" -a "$JAVA" -s KILL
         | 
| 463 | 
            +
                    fi
         | 
| 464 | 
            +
             | 
| 465 | 
            +
                    sleep 1
         | 
| 466 | 
            +
                  done
         | 
| 467 | 
            +
             | 
| 468 | 
            +
                  rm -f "$JETTY_PID"
         | 
| 469 | 
            +
                  echo OK
         | 
| 470 | 
            +
                else
         | 
| 471 | 
            +
                  PID=$(cat "$JETTY_PID" 2>/dev/null)
         | 
| 472 | 
            +
                  kill "$PID" 2>/dev/null
         | 
| 473 | 
            +
                  
         | 
| 474 | 
            +
                  TIMEOUT=30
         | 
| 475 | 
            +
                  while running $JETTY_PID; do
         | 
| 476 | 
            +
                    if (( TIMEOUT-- == 0 )); then
         | 
| 477 | 
            +
                      kill -KILL "$PID" 2>/dev/null
         | 
| 478 | 
            +
                    fi
         | 
| 479 | 
            +
             | 
| 480 | 
            +
                    sleep 1
         | 
| 481 | 
            +
                  done
         | 
| 482 | 
            +
             | 
| 483 | 
            +
                  rm -f "$JETTY_PID"
         | 
| 484 | 
            +
                  echo OK
         | 
| 485 | 
            +
                fi
         | 
| 486 | 
            +
             | 
| 487 | 
            +
                ;;
         | 
| 488 | 
            +
             | 
| 489 | 
            +
              restart)
         | 
| 490 | 
            +
                JETTY_SH=$0
         | 
| 491 | 
            +
                if [ ! -f $JETTY_SH ]; then
         | 
| 492 | 
            +
                  if [ ! -f $JETTY_HOME/bin/jetty.sh ]; then
         | 
| 493 | 
            +
                    echo "$JETTY_HOME/bin/jetty.sh does not exist."
         | 
| 494 | 
            +
                    exit 1
         | 
| 495 | 
            +
                  fi
         | 
| 496 | 
            +
                  JETTY_SH=$JETTY_HOME/bin/jetty.sh
         | 
| 497 | 
            +
                fi
         | 
| 498 | 
            +
             | 
| 499 | 
            +
                "$JETTY_SH" stop "$@"
         | 
| 500 | 
            +
                "$JETTY_SH" start "$@"
         | 
| 501 | 
            +
             | 
| 502 | 
            +
                ;;
         | 
| 503 | 
            +
             | 
| 504 | 
            +
              supervise)
         | 
| 505 | 
            +
                #
         | 
| 506 | 
            +
                # Under control of daemontools supervise monitor which
         | 
| 507 | 
            +
                # handles restarts and shutdowns via the svc program.
         | 
| 508 | 
            +
                #
         | 
| 509 | 
            +
                exec "${RUN_CMD[@]}"
         | 
| 510 | 
            +
             | 
| 511 | 
            +
                ;;
         | 
| 512 | 
            +
             | 
| 513 | 
            +
              run|demo)
         | 
| 514 | 
            +
                echo "Running Jetty: "
         | 
| 515 | 
            +
             | 
| 516 | 
            +
                if [ -f "$JETTY_PID" ]
         | 
| 517 | 
            +
                then
         | 
| 518 | 
            +
                  if running "$JETTY_PID"
         | 
| 519 | 
            +
                  then
         | 
| 520 | 
            +
                    echo "Already Running!"
         | 
| 521 | 
            +
                    exit 1
         | 
| 522 | 
            +
                  else
         | 
| 523 | 
            +
                    # dead pid file - remove
         | 
| 524 | 
            +
                    rm -f "$JETTY_PID"
         | 
| 525 | 
            +
                  fi
         | 
| 526 | 
            +
                fi
         | 
| 527 | 
            +
             | 
| 528 | 
            +
                exec "${RUN_CMD[@]}"
         | 
| 529 | 
            +
                ;;
         | 
| 530 | 
            +
             | 
| 531 | 
            +
              check|status)
         | 
| 532 | 
            +
                echo "Checking arguments to Jetty: "
         | 
| 533 | 
            +
                echo "START_INI      =  $START_INI"
         | 
| 534 | 
            +
                echo "JETTY_HOME     =  $JETTY_HOME"
         | 
| 535 | 
            +
                echo "JETTY_BASE     =  $JETTY_BASE"
         | 
| 536 | 
            +
                echo "JETTY_CONF     =  $JETTY_CONF"
         | 
| 537 | 
            +
                echo "JETTY_PID      =  $JETTY_PID"
         | 
| 538 | 
            +
                echo "JETTY_START    =  $JETTY_START"
         | 
| 539 | 
            +
                echo "JETTY_LOGS     =  $JETTY_LOGS"
         | 
| 540 | 
            +
                echo "CLASSPATH      =  $CLASSPATH"
         | 
| 541 | 
            +
                echo "JAVA           =  $JAVA"
         | 
| 542 | 
            +
                echo "JAVA_OPTIONS   =  ${JAVA_OPTIONS[*]}"
         | 
| 543 | 
            +
                echo "JETTY_ARGS     =  ${JETTY_ARGS[*]}"
         | 
| 544 | 
            +
                echo "RUN_CMD        =  ${RUN_CMD[*]}"
         | 
| 545 | 
            +
                echo
         | 
| 546 | 
            +
                
         | 
| 547 | 
            +
                if [ -f "$JETTY_PID" ]
         | 
| 548 | 
            +
                then
         | 
| 549 | 
            +
                  echo "Jetty running pid=$(< "$JETTY_PID")"
         | 
| 550 | 
            +
                  exit 0
         | 
| 551 | 
            +
                fi
         | 
| 552 | 
            +
                exit 1
         | 
| 553 | 
            +
             | 
| 554 | 
            +
                ;;
         | 
| 555 | 
            +
             | 
| 556 | 
            +
              *)
         | 
| 557 | 
            +
                usage
         | 
| 558 | 
            +
             | 
| 559 | 
            +
                ;;
         | 
| 560 | 
            +
            esac
         | 
| 561 | 
            +
             | 
| 562 | 
            +
            exit 0
         | 
| @@ -0,0 +1,28 @@ | |
| 1 | 
            +
            #!/bin/sh
         | 
| 2 | 
            +
            source /tmp/hello/createExecUser.sh
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            # Install JRE 1.7
         | 
| 5 | 
            +
            # sudo yum install java-1.7.0-openjdk.x86_64 -y
         | 
| 6 | 
            +
            # sudo alternatives --set java /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            # Install & Run Jetty
         | 
| 9 | 
            +
            if [ ! -d /opt/jetty ]
         | 
| 10 | 
            +
            then
         | 
| 11 | 
            +
            	#wget http://download.eclipse.org/jetty/9.1.1.v20140108/dist/jetty-distribution-9.1.1.v20140108.tar.gz -O jetty.tar.gz
         | 
| 12 | 
            +
            	#wget http://cdn.mirror.garr.it/mirror3/mirrors/eclipse//jetty/9.1.0.v20131115/dist/jetty-distribution-9.1.0.v20131115.tar.gz -O jetty.tar.gz
         | 
| 13 | 
            +
            	wget http://eclipse.mirror.triple-it.nl/jetty/stable-9/dist/jetty-distribution-9.1.4.v20140401.tar.gz -O jetty.tar.gz
         | 
| 14 | 
            +
            	tar -xf jetty.tar.gz 
         | 
| 15 | 
            +
            	rm jetty.tar.gz
         | 
| 16 | 
            +
            	mv jetty-* jetty
         | 
| 17 | 
            +
            	sudo mv jetty /opt/
         | 
| 18 | 
            +
            	sudo /usr/sbin/useradd jetty
         | 
| 19 | 
            +
            	sudo mkdir /var/log/jetty
         | 
| 20 | 
            +
            	sudo chown -R jetty:jetty /var/log/jetty /opt/jetty
         | 
| 21 | 
            +
            fi
         | 
| 22 | 
            +
            	
         | 
| 23 | 
            +
            sudo cp /tmp/hello/jetty /etc/init.d
         | 
| 24 | 
            +
            sudo chmod a+x /etc/init.d/jetty
         | 
| 25 | 
            +
            sudo chkconfig --add jetty
         | 
| 26 | 
            +
            sudo chkconfig jetty on
         | 
| 27 | 
            +
            sudo service jetty restart
         | 
| 28 | 
            +
            	
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: dployr
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.0. | 
| 4 | 
            +
              version: 0.0.4
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Tomas Aparicio
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2014-04- | 
| 12 | 
            +
            date: 2014-04-29 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: fog
         | 
| @@ -139,6 +139,7 @@ files: | |
| 139 139 | 
             
            - lib/dployr/commands/stop_destroy.rb
         | 
| 140 140 | 
             
            - lib/dployr/commands/utils.rb
         | 
| 141 141 | 
             
            - lib/dployr/compute/aws.rb
         | 
| 142 | 
            +
            - lib/dployr/compute/common.rb
         | 
| 142 143 | 
             
            - lib/dployr/compute/gce.rb
         | 
| 143 144 | 
             
            - lib/dployr/config/constants.rb
         | 
| 144 145 | 
             
            - lib/dployr/config/create.rb
         | 
| @@ -155,14 +156,19 @@ files: | |
| 155 156 | 
             
            - lib/dployr/scripts/ssh.rb
         | 
| 156 157 | 
             
            - lib/dployr/utils.rb
         | 
| 157 158 | 
             
            - lib/dployr/version.rb
         | 
| 159 | 
            +
            - spec/commands_config_spec.rb
         | 
| 158 160 | 
             
            - spec/commands_util_spec.rb
         | 
| 159 161 | 
             
            - spec/config_file_utils_spec.rb
         | 
| 160 162 | 
             
            - spec/config_instance_spec.rb
         | 
| 161 163 | 
             
            - spec/configuration_spec.rb
         | 
| 162 164 | 
             
            - spec/fixtures/Dployrfile
         | 
| 163 165 | 
             
            - spec/fixtures/Dployrfile.yml
         | 
| 164 | 
            -
            - spec/fixtures/ | 
| 165 | 
            -
            - spec/fixtures/ | 
| 166 | 
            +
            - spec/fixtures/basic/Dployrfile.yml
         | 
| 167 | 
            +
            - spec/fixtures/german/Dployrfile.yml
         | 
| 168 | 
            +
            - spec/fixtures/hello/createExecUser.sh
         | 
| 169 | 
            +
            - spec/fixtures/hello/hello.sh
         | 
| 170 | 
            +
            - spec/fixtures/hello/jetty
         | 
| 171 | 
            +
            - spec/fixtures/hello/jetty.sh
         | 
| 166 172 | 
             
            - spec/fog_spec_.rb
         | 
| 167 173 | 
             
            - spec/init_spec.rb
         | 
| 168 174 | 
             
            - spec/spec_helper.rb
         | 
| @@ -188,19 +194,24 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 188 194 | 
             
                  version: '0'
         | 
| 189 195 | 
             
            requirements: []
         | 
| 190 196 | 
             
            rubyforge_project: dployr
         | 
| 191 | 
            -
            rubygems_version: 2.0. | 
| 197 | 
            +
            rubygems_version: 2.0.6
         | 
| 192 198 | 
             
            signing_key: 
         | 
| 193 199 | 
             
            specification_version: 4
         | 
| 194 200 | 
             
            summary: Multicloud management and deployment with asteroids made simple
         | 
| 195 201 | 
             
            test_files:
         | 
| 202 | 
            +
            - spec/commands_config_spec.rb
         | 
| 196 203 | 
             
            - spec/commands_util_spec.rb
         | 
| 197 204 | 
             
            - spec/config_file_utils_spec.rb
         | 
| 198 205 | 
             
            - spec/config_instance_spec.rb
         | 
| 199 206 | 
             
            - spec/configuration_spec.rb
         | 
| 200 207 | 
             
            - spec/fixtures/Dployrfile
         | 
| 201 208 | 
             
            - spec/fixtures/Dployrfile.yml
         | 
| 202 | 
            -
            - spec/fixtures/ | 
| 203 | 
            -
            - spec/fixtures/ | 
| 209 | 
            +
            - spec/fixtures/basic/Dployrfile.yml
         | 
| 210 | 
            +
            - spec/fixtures/german/Dployrfile.yml
         | 
| 211 | 
            +
            - spec/fixtures/hello/createExecUser.sh
         | 
| 212 | 
            +
            - spec/fixtures/hello/hello.sh
         | 
| 213 | 
            +
            - spec/fixtures/hello/jetty
         | 
| 214 | 
            +
            - spec/fixtures/hello/jetty.sh
         | 
| 204 215 | 
             
            - spec/fog_spec_.rb
         | 
| 205 216 | 
             
            - spec/init_spec.rb
         | 
| 206 217 | 
             
            - spec/spec_helper.rb
         | 
| 
            File without changes
         |