marathon_deploy 0.0.1
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 +7 -0
 - data/.gitignore +16 -0
 - data/Gemfile +4 -0
 - data/LICENSE.txt +22 -0
 - data/NOTES +5 -0
 - data/README.md +31 -0
 - data/Rakefile +2 -0
 - data/TODO +11 -0
 - data/bin/deploy +3 -0
 - data/bin/deploy.rb +106 -0
 - data/bin/json2yaml.rb +5 -0
 - data/examples/deploy.json +66 -0
 - data/examples/deploy.yaml +54 -0
 - data/examples/jondeploy.yaml +16 -0
 - data/examples/jondeploy2.yaml +24 -0
 - data/examples/nohealthchecks.yaml +18 -0
 - data/examples/public-search-germany-webapp.pre.json +67 -0
 - data/examples/run.sh +3 -0
 - data/examples/testout.json +68 -0
 - data/examples/testout.yaml +54 -0
 - data/input.txt +66 -0
 - data/lib/marathon_deploy.rb +5 -0
 - data/lib/marathon_deploy/application.rb +85 -0
 - data/lib/marathon_deploy/deployment.rb +269 -0
 - data/lib/marathon_deploy/environment.rb +28 -0
 - data/lib/marathon_deploy/error.rb +21 -0
 - data/lib/marathon_deploy/http_util.rb +91 -0
 - data/lib/marathon_deploy/macro.rb +71 -0
 - data/lib/marathon_deploy/marathon_client.rb +79 -0
 - data/lib/marathon_deploy/marathon_defaults.rb +83 -0
 - data/lib/marathon_deploy/utils.rb +31 -0
 - data/lib/marathon_deploy/version.rb +3 -0
 - data/lib/marathon_deploy/yaml_json.rb +45 -0
 - data/marathon_deploy.gemspec +28 -0
 - metadata +136 -0
 
    
        checksums.yaml
    ADDED
    
    | 
         @@ -0,0 +1,7 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ---
         
     | 
| 
      
 2 
     | 
    
         
            +
            SHA1:
         
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: b3a0f127044b188815965b3e84ab4557089fba6c
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 914fee4de65ceb166a9790fa4ca1b6d84af8981d
         
     | 
| 
      
 5 
     | 
    
         
            +
            SHA512:
         
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 3b380869cd355157e8f323de645cd8b5da55be01241447e1bb6e0dfe3bb6ba0ec697b61facc3255fa5e1b1a3c576083dca6dca7c5b9bb1f419ccc8bbd6e17f7a
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 7244d59e9504ec09c195ff4bf73a0fca16030644c29bbbc036cc59f57152c17bca2e08b2f5a1237305a500cfe333040f9735acb83293b4341d8cb982c2b0c43d
         
     | 
    
        data/.gitignore
    ADDED
    
    
    
        data/Gemfile
    ADDED
    
    
    
        data/LICENSE.txt
    ADDED
    
    | 
         @@ -0,0 +1,22 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Copyright (c) 2015 Jonathan Colby
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            MIT License
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            Permission is hereby granted, free of charge, to any person obtaining
         
     | 
| 
      
 6 
     | 
    
         
            +
            a copy of this software and associated documentation files (the
         
     | 
| 
      
 7 
     | 
    
         
            +
            "Software"), to deal in the Software without restriction, including
         
     | 
| 
      
 8 
     | 
    
         
            +
            without limitation the rights to use, copy, modify, merge, publish,
         
     | 
| 
      
 9 
     | 
    
         
            +
            distribute, sublicense, and/or sell copies of the Software, and to
         
     | 
| 
      
 10 
     | 
    
         
            +
            permit persons to whom the Software is furnished to do so, subject to
         
     | 
| 
      
 11 
     | 
    
         
            +
            the following conditions:
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            The above copyright notice and this permission notice shall be
         
     | 
| 
      
 14 
     | 
    
         
            +
            included in all copies or substantial portions of the Software.
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
         
     | 
| 
      
 17 
     | 
    
         
            +
            EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
         
     | 
| 
      
 18 
     | 
    
         
            +
            MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
         
     | 
| 
      
 19 
     | 
    
         
            +
            NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
         
     | 
| 
      
 20 
     | 
    
         
            +
            LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
         
     | 
| 
      
 21 
     | 
    
         
            +
            OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
         
     | 
| 
      
 22 
     | 
    
         
            +
            WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
         
     | 
    
        data/NOTES
    ADDED
    
    | 
         @@ -0,0 +1,5 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # http://www.mudskipper-solutions.com/home/how-to-send-jsonhttp-using-ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
            # http://www.bls.gov/developers/api_ruby.htm
         
     | 
| 
      
 3 
     | 
    
         
            +
            # https://gist.github.com/amirrajan/2369851
         
     | 
| 
      
 4 
     | 
    
         
            +
            # http://mikeebert.tumblr.com/post/56891815151/posting-json-with-net-http
         
     | 
| 
      
 5 
     | 
    
         
            +
            # https://github.com/augustl/net-http-cheat-sheet
         
     | 
    
        data/README.md
    ADDED
    
    | 
         @@ -0,0 +1,31 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # MarathonDeploy
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            TODO: Write a gem description
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            ## Installation
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            Add this line to your application's Gemfile:
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 10 
     | 
    
         
            +
            gem 'marathon_deploy'
         
     | 
| 
      
 11 
     | 
    
         
            +
            ```
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            And then execute:
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                $ bundle
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            Or install it yourself as:
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                $ gem install marathon_deploy
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
            ## Usage
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
            TODO: Write usage instructions here
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            ## Contributing
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
            1. Fork it ( https://github.com/[my-github-username]/marathon_deploy/fork )
         
     | 
| 
      
 28 
     | 
    
         
            +
            2. Create your feature branch (`git checkout -b my-new-feature`)
         
     | 
| 
      
 29 
     | 
    
         
            +
            3. Commit your changes (`git commit -am 'Add some feature'`)
         
     | 
| 
      
 30 
     | 
    
         
            +
            4. Push to the branch (`git push origin my-new-feature`)
         
     | 
| 
      
 31 
     | 
    
         
            +
            5. Create a new Pull Request
         
     | 
    
        data/Rakefile
    ADDED
    
    
    
        data/TODO
    ADDED
    
    | 
         @@ -0,0 +1,11 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            - SLACK notification
         
     | 
| 
      
 2 
     | 
    
         
            +
            - https://mesosphere.com/blog/2015/04/02/continuous-deployment-with-mesos-marathon-docker/
         
     | 
| 
      
 3 
     | 
    
         
            +
            - log to database
         
     | 
| 
      
 4 
     | 
    
         
            +
            DONE datacenter handling, iterate
         
     | 
| 
      
 5 
     | 
    
         
            +
            DONE deployment status polling
         
     | 
| 
      
 6 
     | 
    
         
            +
            - config assembler / generate properties script ?
         
     | 
| 
      
 7 
     | 
    
         
            +
            - read in ENVIRONMENT VARIABLES WITH MARATHON_ and add to deployment json ?
         
     | 
| 
      
 8 
     | 
    
         
            +
            - inject / replce minimumHealthCapacity is 1, maximumOverCapacity is 1
         
     | 
| 
      
 9 
     | 
    
         
            +
            DESCOPED custom external ports (must be provided in json)
         
     | 
| 
      
 10 
     | 
    
         
            +
            - read macros %NAME% from yaml/json and verify they are defined
         
     | 
| 
      
 11 
     | 
    
         
            +
            - gem structure / packaging / metadata
         
     | 
    
        data/bin/deploy
    ADDED
    
    
    
        data/bin/deploy.rb
    ADDED
    
    | 
         @@ -0,0 +1,106 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/usr/bin/env ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            require 'marathon_deploy/marathon_defaults'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'marathon_deploy/marathon_client'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require 'marathon_deploy/error'
         
     | 
| 
      
 6 
     | 
    
         
            +
            require 'marathon_deploy/application'
         
     | 
| 
      
 7 
     | 
    
         
            +
            require 'marathon_deploy/environment'
         
     | 
| 
      
 8 
     | 
    
         
            +
            require 'optparse'
         
     | 
| 
      
 9 
     | 
    
         
            +
            require 'logger'
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            options = {}
         
     | 
| 
      
 12 
     | 
    
         
            +
              
         
     | 
| 
      
 13 
     | 
    
         
            +
            # DEFAULTS
         
     | 
| 
      
 14 
     | 
    
         
            +
            options[:deployfile] = MarathonDefaults::DEFAULT_DEPLOYFILE
         
     | 
| 
      
 15 
     | 
    
         
            +
            options[:verbose] = MarathonDefaults::DEFAULT_LOGLEVEL
         
     | 
| 
      
 16 
     | 
    
         
            +
            options[:environment] = MarathonDefaults::DEFAULT_ENVIRONMENT_NAME
         
     | 
| 
      
 17 
     | 
    
         
            +
            options[:marathon_endpoints] = nil
         
     | 
| 
      
 18 
     | 
    
         
            +
            options[:logfile] = MarathonDefaults::DEFAULT_LOGFILE
         
     | 
| 
      
 19 
     | 
    
         
            +
              
         
     | 
| 
      
 20 
     | 
    
         
            +
            OptionParser.new do |opts|
         
     | 
| 
      
 21 
     | 
    
         
            +
              opts.banner = "Usage: deploy.rb [options]"
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
              opts.on("-u","--url MARATHON_URL(S)", Array, "Default: #{options[:marathon_endpoints]}") do |u|    
         
     | 
| 
      
 24 
     | 
    
         
            +
                options[:marathon_endpoints] = u  
         
     | 
| 
      
 25 
     | 
    
         
            +
              end
         
     | 
| 
      
 26 
     | 
    
         
            +
                
         
     | 
| 
      
 27 
     | 
    
         
            +
              opts.on("-l", "--logfile LOGFILE", "Default: STDOUT") do |l|
         
     | 
| 
      
 28 
     | 
    
         
            +
                options[:logfile] = l  
         
     | 
| 
      
 29 
     | 
    
         
            +
              end
         
     | 
| 
      
 30 
     | 
    
         
            +
              
         
     | 
| 
      
 31 
     | 
    
         
            +
              opts.on("-v", "--verbose", "Run verbosely") do |v|
         
     | 
| 
      
 32 
     | 
    
         
            +
                options[:verbose] = Logger::DEBUG
         
     | 
| 
      
 33 
     | 
    
         
            +
              end
         
     | 
| 
      
 34 
     | 
    
         
            +
              
         
     | 
| 
      
 35 
     | 
    
         
            +
              opts.on("-f", "--file DEPLOYFILE" ,"Deploy file with json or yaml file extension. Default: #{options[:deployfile]}") do |f|
         
     | 
| 
      
 36 
     | 
    
         
            +
                options[:deployfile] = f
         
     | 
| 
      
 37 
     | 
    
         
            +
              end
         
     | 
| 
      
 38 
     | 
    
         
            +
              
         
     | 
| 
      
 39 
     | 
    
         
            +
              opts.on("-e", "--environment ENVIRONMENT", "Default: #{options[:environment]}" ) do |e|
         
     | 
| 
      
 40 
     | 
    
         
            +
                options[:environment] = e
         
     | 
| 
      
 41 
     | 
    
         
            +
              end
         
     | 
| 
      
 42 
     | 
    
         
            +
              
         
     | 
| 
      
 43 
     | 
    
         
            +
              opts.on_tail("-h", "--help", "Show this message") do
         
     | 
| 
      
 44 
     | 
    
         
            +
                puts opts
         
     | 
| 
      
 45 
     | 
    
         
            +
                exit
         
     | 
| 
      
 46 
     | 
    
         
            +
              end 
         
     | 
| 
      
 47 
     | 
    
         
            +
            end.parse!
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
            $LOG = options[:logfile] ? Logger.new(options[:logfile]) : Logger.new(STDOUT)
         
     | 
| 
      
 50 
     | 
    
         
            +
            $LOG.level = options[:verbose]
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
            deployfile = options[:deployfile]
         
     | 
| 
      
 53 
     | 
    
         
            +
            environment = Environment.new(options[:environment])
         
     | 
| 
      
 54 
     | 
    
         
            +
              
         
     | 
| 
      
 55 
     | 
    
         
            +
            marathon_endpoints = Array.new
         
     | 
| 
      
 56 
     | 
    
         
            +
            if (options[:marathon_endpoints].nil?)
         
     | 
| 
      
 57 
     | 
    
         
            +
              if (environment.is_production?)
         
     | 
| 
      
 58 
     | 
    
         
            +
                marathon_endpoints = MarathonDefaults::DEFAULT_PRODUCTION_MARATHON_ENDPOINTS
         
     | 
| 
      
 59 
     | 
    
         
            +
              else
         
     | 
| 
      
 60 
     | 
    
         
            +
                marathon_endpoints = MarathonDefaults::DEFAULT_PREPRODUCTION_MARATHON_ENDPOINTS
         
     | 
| 
      
 61 
     | 
    
         
            +
              end
         
     | 
| 
      
 62 
     | 
    
         
            +
            else
         
     | 
| 
      
 63 
     | 
    
         
            +
              marathon_endpoints = options[:marathon_endpoints]
         
     | 
| 
      
 64 
     | 
    
         
            +
            end
         
     | 
| 
      
 65 
     | 
    
         
            +
             
         
     | 
| 
      
 66 
     | 
    
         
            +
            begin
         
     | 
| 
      
 67 
     | 
    
         
            +
              application = Application.new(deployfile)
         
     | 
| 
      
 68 
     | 
    
         
            +
            rescue Error::IOError, Error::UndefinedMacroError,Error::MissingMarathonAttributesError,Error::UnsupportedFileExtension  => e
         
     | 
| 
      
 69 
     | 
    
         
            +
              $LOG.debug(e)
         
     | 
| 
      
 70 
     | 
    
         
            +
              $LOG.error(e.message)
         
     | 
| 
      
 71 
     | 
    
         
            +
              exit!
         
     | 
| 
      
 72 
     | 
    
         
            +
            end
         
     | 
| 
      
 73 
     | 
    
         
            +
             
     | 
| 
      
 74 
     | 
    
         
            +
            begin
         
     | 
| 
      
 75 
     | 
    
         
            +
              application.add_envs({ :APPLICATION_NAME => application.id, :ENVIRONMENT => environment})
         
     | 
| 
      
 76 
     | 
    
         
            +
            rescue Error::BadFormatError => e
         
     | 
| 
      
 77 
     | 
    
         
            +
              $LOG.error(e)
         
     | 
| 
      
 78 
     | 
    
         
            +
              exit!
         
     | 
| 
      
 79 
     | 
    
         
            +
            end
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
      
 81 
     | 
    
         
            +
            if (!environment.is_production?)
         
     | 
| 
      
 82 
     | 
    
         
            +
              application.overlay_preproduction_settings
         
     | 
| 
      
 83 
     | 
    
         
            +
            end
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
      
 85 
     | 
    
         
            +
            puts "#" * 100
         
     | 
| 
      
 86 
     | 
    
         
            +
            puts JSON.pretty_generate(application.json)
         
     | 
| 
      
 87 
     | 
    
         
            +
            puts "#" * 100
         
     | 
| 
      
 88 
     | 
    
         
            +
             
     | 
| 
      
 89 
     | 
    
         
            +
            # deploy to each endpoint
         
     | 
| 
      
 90 
     | 
    
         
            +
            marathon_endpoints.each do |marathon_url|
         
     | 
| 
      
 91 
     | 
    
         
            +
              begin
         
     | 
| 
      
 92 
     | 
    
         
            +
                client = MarathonClient.new(marathon_url)
         
     | 
| 
      
 93 
     | 
    
         
            +
                client.application = application
         
     | 
| 
      
 94 
     | 
    
         
            +
                client.deploy  
         
     | 
| 
      
 95 
     | 
    
         
            +
              rescue Error::MissingMarathonAttributesError,Error::BadURLError, Timeout::Error => e
         
     | 
| 
      
 96 
     | 
    
         
            +
                $LOG.error(e.message)
         
     | 
| 
      
 97 
     | 
    
         
            +
                exit!
         
     | 
| 
      
 98 
     | 
    
         
            +
              rescue Error::DeploymentError => e
         
     | 
| 
      
 99 
     | 
    
         
            +
                $LOG.error("Deployment of #{application} failed => #{e}")
         
     | 
| 
      
 100 
     | 
    
         
            +
                exit!
         
     | 
| 
      
 101 
     | 
    
         
            +
              rescue SocketError, Error::MarathonError  => e
         
     | 
| 
      
 102 
     | 
    
         
            +
                $LOG.error("Problem talking to marathon endpoint => #{marathon_url} (#{e.message})")
         
     | 
| 
      
 103 
     | 
    
         
            +
                exit!
         
     | 
| 
      
 104 
     | 
    
         
            +
              end
         
     | 
| 
      
 105 
     | 
    
         
            +
             
     | 
| 
      
 106 
     | 
    
         
            +
            end
         
     | 
    
        data/bin/json2yaml.rb
    ADDED
    
    
| 
         @@ -0,0 +1,66 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            {
         
     | 
| 
      
 2 
     | 
    
         
            +
                "args": [
         
     | 
| 
      
 3 
     | 
    
         
            +
                    "properties.py && FOO=\"`cat /opt/etc/public-search-germany-webapp.properties | grep -v '^\\s*#' | grep -E '.+=.+'`\"; echo $FOO; echo; env $FOO; echo; env $FOO hostName=$HOSTNAME backend.instance.name=$HOSTNAME java -Dhttp.port=8080 -Dajp.port=8009 -Dinstance.confdir=file:///opt/etc -Dbackend.logdir=$MESOS_SANDBOX -Dlog.rootDir=$MESOS_SANDBOX -DlogDir=$MESOS_SANDBOX $CMD_OPTS -Xmx$JAVA_XMX -Xms$JAVA_XMS -jar $MESOS_SANDBOX/public-search-germany-webapp*.jar"
         
     | 
| 
      
 4 
     | 
    
         
            +
                ],
         
     | 
| 
      
 5 
     | 
    
         
            +
                "cmd": null,
         
     | 
| 
      
 6 
     | 
    
         
            +
                "container": {
         
     | 
| 
      
 7 
     | 
    
         
            +
                    "docker": {
         
     | 
| 
      
 8 
     | 
    
         
            +
                        "image": "dockerregistry.mobile.rz/mobile-java8:latest",
         
     | 
| 
      
 9 
     | 
    
         
            +
                        "network": "BRIDGE",
         
     | 
| 
      
 10 
     | 
    
         
            +
                        "portMappings": [
         
     | 
| 
      
 11 
     | 
    
         
            +
                            {
         
     | 
| 
      
 12 
     | 
    
         
            +
                                "containerPort": 8080,
         
     | 
| 
      
 13 
     | 
    
         
            +
                                "hostPort": 0,
         
     | 
| 
      
 14 
     | 
    
         
            +
                                "protocol": "tcp"
         
     | 
| 
      
 15 
     | 
    
         
            +
                            },
         
     | 
| 
      
 16 
     | 
    
         
            +
                            {
         
     | 
| 
      
 17 
     | 
    
         
            +
                                "containerPort": 8009,
         
     | 
| 
      
 18 
     | 
    
         
            +
                                "hostPort": 0,
         
     | 
| 
      
 19 
     | 
    
         
            +
                                "protocol": "tcp"
         
     | 
| 
      
 20 
     | 
    
         
            +
                            }
         
     | 
| 
      
 21 
     | 
    
         
            +
                        ]
         
     | 
| 
      
 22 
     | 
    
         
            +
                    },
         
     | 
| 
      
 23 
     | 
    
         
            +
                    "type": "DOCKER"
         
     | 
| 
      
 24 
     | 
    
         
            +
                },
         
     | 
| 
      
 25 
     | 
    
         
            +
                "cpus": 0.1,
         
     | 
| 
      
 26 
     | 
    
         
            +
                "env": {
         
     | 
| 
      
 27 
     | 
    
         
            +
                    "APPLICATION_NAME": "public-search-germany-webapp",
         
     | 
| 
      
 28 
     | 
    
         
            +
                    "CMD_OPTS": "",
         
     | 
| 
      
 29 
     | 
    
         
            +
                    "CONFIG_ASSEMBLER_BASE_URL": "http://mobile-config-assembler.service.consul/config-assembler",
         
     | 
| 
      
 30 
     | 
    
         
            +
                    "DATACENTER_NUMBER": "44",
         
     | 
| 
      
 31 
     | 
    
         
            +
                    "JAVA_XMS": "252m",
         
     | 
| 
      
 32 
     | 
    
         
            +
                    "JAVA_XMX": "504m",
         
     | 
| 
      
 33 
     | 
    
         
            +
                    "SERVERCLASS_NAME": "pubse",
         
     | 
| 
      
 34 
     | 
    
         
            +
                    "SERVICE_8009_NAME": "public-search-germany-webapp",
         
     | 
| 
      
 35 
     | 
    
         
            +
                    "SERVICE_8009_TAGS": "ajp",
         
     | 
| 
      
 36 
     | 
    
         
            +
                    "SERVICE_8080_CHECK_SCRIPT": "curl --fail --silent $HOST_IP:$SERVICE_PORT/fz/release-info",
         
     | 
| 
      
 37 
     | 
    
         
            +
                    "SERVICE_8080_NAME": "public-search-germany-webapp",
         
     | 
| 
      
 38 
     | 
    
         
            +
                    "SERVICE_8080_TAGS": "http,haproxy"
         
     | 
| 
      
 39 
     | 
    
         
            +
                },
         
     | 
| 
      
 40 
     | 
    
         
            +
                "healthChecks": [
         
     | 
| 
      
 41 
     | 
    
         
            +
                    {
         
     | 
| 
      
 42 
     | 
    
         
            +
                        "gracePeriodSeconds": 30,
         
     | 
| 
      
 43 
     | 
    
         
            +
                        "intervalSeconds": 10,
         
     | 
| 
      
 44 
     | 
    
         
            +
                        "maxConsecutiveFailures": 3,
         
     | 
| 
      
 45 
     | 
    
         
            +
                        "portIndex": 0,
         
     | 
| 
      
 46 
     | 
    
         
            +
                        "protocol": "TCP",
         
     | 
| 
      
 47 
     | 
    
         
            +
                        "timeoutSeconds": 30
         
     | 
| 
      
 48 
     | 
    
         
            +
                    },
         
     | 
| 
      
 49 
     | 
    
         
            +
                    {
         
     | 
| 
      
 50 
     | 
    
         
            +
                        "gracePeriodSeconds": 30,
         
     | 
| 
      
 51 
     | 
    
         
            +
                        "intervalSeconds": 10,
         
     | 
| 
      
 52 
     | 
    
         
            +
                        "maxConsecutiveFailures": 3,
         
     | 
| 
      
 53 
     | 
    
         
            +
                        "path": "/fz/release-info",
         
     | 
| 
      
 54 
     | 
    
         
            +
                        "portIndex": 0,
         
     | 
| 
      
 55 
     | 
    
         
            +
                        "protocol": "HTTP",
         
     | 
| 
      
 56 
     | 
    
         
            +
                        "timeoutSeconds": 30
         
     | 
| 
      
 57 
     | 
    
         
            +
                    }
         
     | 
| 
      
 58 
     | 
    
         
            +
                ],
         
     | 
| 
      
 59 
     | 
    
         
            +
                "id": "public-search-germany-webapp",
         
     | 
| 
      
 60 
     | 
    
         
            +
                "instances": 4,
         
     | 
| 
      
 61 
     | 
    
         
            +
                "mem": 512,
         
     | 
| 
      
 62 
     | 
    
         
            +
                "storeUrls": [
         
     | 
| 
      
 63 
     | 
    
         
            +
                    "http://maven-download.mobile.rz/maven/hosted-mobile-deployment-productive-releases/de/mobile/public-search-germany-webapp/ecs-1558-gb70c745/public-search-germany-webapp-ecs-1558-gb70c745.jar"
         
     | 
| 
      
 64 
     | 
    
         
            +
                ],
         
     | 
| 
      
 65 
     | 
    
         
            +
                "uris": []
         
     | 
| 
      
 66 
     | 
    
         
            +
            }
         
     | 
| 
         @@ -0,0 +1,54 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ---
         
     | 
| 
      
 2 
     | 
    
         
            +
            args:
         
     | 
| 
      
 3 
     | 
    
         
            +
            - properties.py && FOO="`cat /opt/etc/public-search-germany-webapp.properties | grep
         
     | 
| 
      
 4 
     | 
    
         
            +
              -v '^\s*#' | grep -E '.+=.+'`"; echo $FOO; echo; env $FOO; echo; env $FOO hostName=$HOSTNAME
         
     | 
| 
      
 5 
     | 
    
         
            +
              backend.instance.name=$HOSTNAME java -Dhttp.port=8080 -Dajp.port=8009 -Dinstance.confdir=file:///opt/etc
         
     | 
| 
      
 6 
     | 
    
         
            +
              -Dbackend.logdir=$MESOS_SANDBOX -Dlog.rootDir=$MESOS_SANDBOX -DlogDir=$MESOS_SANDBOX
         
     | 
| 
      
 7 
     | 
    
         
            +
              $CMD_OPTS -Xmx$JAVA_XMX -Xms$JAVA_XMS -jar $MESOS_SANDBOX/public-search-germany-webapp*.jar
         
     | 
| 
      
 8 
     | 
    
         
            +
            cmd: 
         
     | 
| 
      
 9 
     | 
    
         
            +
            container:
         
     | 
| 
      
 10 
     | 
    
         
            +
              docker:
         
     | 
| 
      
 11 
     | 
    
         
            +
                image: dockerregistry.mobile.rz/mobile-java8:latest
         
     | 
| 
      
 12 
     | 
    
         
            +
                network: BRIDGE
         
     | 
| 
      
 13 
     | 
    
         
            +
                portMappings:
         
     | 
| 
      
 14 
     | 
    
         
            +
                - containerPort: 8080
         
     | 
| 
      
 15 
     | 
    
         
            +
                  hostPort: 0
         
     | 
| 
      
 16 
     | 
    
         
            +
                  protocol: tcp
         
     | 
| 
      
 17 
     | 
    
         
            +
                - containerPort: 8009
         
     | 
| 
      
 18 
     | 
    
         
            +
                  hostPort: 0
         
     | 
| 
      
 19 
     | 
    
         
            +
                  protocol: tcp
         
     | 
| 
      
 20 
     | 
    
         
            +
              type: DOCKER
         
     | 
| 
      
 21 
     | 
    
         
            +
            cpus: 0.1
         
     | 
| 
      
 22 
     | 
    
         
            +
            env:
         
     | 
| 
      
 23 
     | 
    
         
            +
              APPLICATION_NAME: public-search-germany-webapp
         
     | 
| 
      
 24 
     | 
    
         
            +
              CMD_OPTS: ''
         
     | 
| 
      
 25 
     | 
    
         
            +
              CONFIG_ASSEMBLER_BASE_URL: http://mobile-config-assembler.service.consul/config-assembler
         
     | 
| 
      
 26 
     | 
    
         
            +
              DATACENTER_NUMBER: '44'
         
     | 
| 
      
 27 
     | 
    
         
            +
              JAVA_XMS: 252m
         
     | 
| 
      
 28 
     | 
    
         
            +
              JAVA_XMX: 504m
         
     | 
| 
      
 29 
     | 
    
         
            +
              SERVERCLASS_NAME: pubse
         
     | 
| 
      
 30 
     | 
    
         
            +
              SERVICE_8009_NAME: public-search-germany-webapp
         
     | 
| 
      
 31 
     | 
    
         
            +
              SERVICE_8009_TAGS: ajp
         
     | 
| 
      
 32 
     | 
    
         
            +
              SERVICE_8080_CHECK_SCRIPT: curl --fail --silent $HOST_IP:$SERVICE_PORT/fz/release-info
         
     | 
| 
      
 33 
     | 
    
         
            +
              SERVICE_8080_NAME: public-search-germany-webapp
         
     | 
| 
      
 34 
     | 
    
         
            +
              SERVICE_8080_TAGS: http,haproxy
         
     | 
| 
      
 35 
     | 
    
         
            +
            healthChecks:
         
     | 
| 
      
 36 
     | 
    
         
            +
            - gracePeriodSeconds: 30
         
     | 
| 
      
 37 
     | 
    
         
            +
              intervalSeconds: 10
         
     | 
| 
      
 38 
     | 
    
         
            +
              maxConsecutiveFailures: 3
         
     | 
| 
      
 39 
     | 
    
         
            +
              portIndex: 0
         
     | 
| 
      
 40 
     | 
    
         
            +
              protocol: TCP
         
     | 
| 
      
 41 
     | 
    
         
            +
              timeoutSeconds: 30
         
     | 
| 
      
 42 
     | 
    
         
            +
            - gracePeriodSeconds: 30
         
     | 
| 
      
 43 
     | 
    
         
            +
              intervalSeconds: 10
         
     | 
| 
      
 44 
     | 
    
         
            +
              maxConsecutiveFailures: 3
         
     | 
| 
      
 45 
     | 
    
         
            +
              path: "/fz/release-info"
         
     | 
| 
      
 46 
     | 
    
         
            +
              portIndex: 0
         
     | 
| 
      
 47 
     | 
    
         
            +
              protocol: HTTP
         
     | 
| 
      
 48 
     | 
    
         
            +
              timeoutSeconds: 30
         
     | 
| 
      
 49 
     | 
    
         
            +
            id: public-search-germany-webapp
         
     | 
| 
      
 50 
     | 
    
         
            +
            instances: 4
         
     | 
| 
      
 51 
     | 
    
         
            +
            mem: 512
         
     | 
| 
      
 52 
     | 
    
         
            +
            storeUrls:
         
     | 
| 
      
 53 
     | 
    
         
            +
            - http://maven-download.mobile.rz/maven/hosted-mobile-deployment-productive-releases/de/mobile/public-search-germany-webapp/ecs-1558-gb70c745/public-search-germany-webapp-ecs-1558-gb70c745.jar
         
     | 
| 
      
 54 
     | 
    
         
            +
            uris: []
         
     | 
| 
         @@ -0,0 +1,16 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ---
         
     | 
| 
      
 2 
     | 
    
         
            +
            cmd: while true; echo "HELLO WORLD $(date)"; do sleep 1 ; done 
         
     | 
| 
      
 3 
     | 
    
         
            +
            cpus: 0.5
         
     | 
| 
      
 4 
     | 
    
         
            +
            env:
         
     | 
| 
      
 5 
     | 
    
         
            +
              APPLICATION_NAME: public-search-germany-webapp
         
     | 
| 
      
 6 
     | 
    
         
            +
              CONFIG_ASSEMBLER_BASE_URL: http://mobile-config-assembler.service.consul/config-assembler
         
     | 
| 
      
 7 
     | 
    
         
            +
              DATACENTER_NUMBER: '666'
         
     | 
| 
      
 8 
     | 
    
         
            +
              JAVA_XMS: 252m
         
     | 
| 
      
 9 
     | 
    
         
            +
              JAVA_XMX: 504m
         
     | 
| 
      
 10 
     | 
    
         
            +
              SERVERCLASS_NAME: pubse
         
     | 
| 
      
 11 
     | 
    
         
            +
              SERVICE_8009_NAME: public-search-germany-webapp
         
     | 
| 
      
 12 
     | 
    
         
            +
              SERVICE_8009_TAGS: ajp
         
     | 
| 
      
 13 
     | 
    
         
            +
            id: public-search-germany-webapp
         
     | 
| 
      
 14 
     | 
    
         
            +
            instances: 15
         
     | 
| 
      
 15 
     | 
    
         
            +
            mem: 32
         
     | 
| 
      
 16 
     | 
    
         
            +
            uris: []
         
     | 
| 
         @@ -0,0 +1,24 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ---
         
     | 
| 
      
 2 
     | 
    
         
            +
            cmd: while true ; do echo "i got probed ..." ; /bin/nc -l -p $PORT0 ; done
         
     | 
| 
      
 3 
     | 
    
         
            +
            cpus: 0.5
         
     | 
| 
      
 4 
     | 
    
         
            +
            env:
         
     | 
| 
      
 5 
     | 
    
         
            +
              APPLICATION_NAME: public-search-germany-webapp
         
     | 
| 
      
 6 
     | 
    
         
            +
              CONFIG_ASSEMBLER_BASE_URL: http://mobile-config-assembler.service.consul/config-assembler
         
     | 
| 
      
 7 
     | 
    
         
            +
              DATACENTER_NUMBER: '666'
         
     | 
| 
      
 8 
     | 
    
         
            +
              JAVA_XMS: 252m
         
     | 
| 
      
 9 
     | 
    
         
            +
              JAVA_XMX: 504m
         
     | 
| 
      
 10 
     | 
    
         
            +
              SPECIAL_PROPERTY: %%SPECIAL_PROPERTY%%
         
     | 
| 
      
 11 
     | 
    
         
            +
              SERVERCLASS_NAME: pubse
         
     | 
| 
      
 12 
     | 
    
         
            +
              SERVICE_8009_NAME: public-search-germany-webapp
         
     | 
| 
      
 13 
     | 
    
         
            +
              SERVICE_8009_TAGS: ajp
         
     | 
| 
      
 14 
     | 
    
         
            +
            id: content-webapp
         
     | 
| 
      
 15 
     | 
    
         
            +
            instances: 3
         
     | 
| 
      
 16 
     | 
    
         
            +
            mem: 32
         
     | 
| 
      
 17 
     | 
    
         
            +
            uris: []
         
     | 
| 
      
 18 
     | 
    
         
            +
            healthChecks:
         
     | 
| 
      
 19 
     | 
    
         
            +
            - gracePeriodSeconds: 30
         
     | 
| 
      
 20 
     | 
    
         
            +
              intervalSeconds: 10
         
     | 
| 
      
 21 
     | 
    
         
            +
              maxConsecutiveFailures: 3
         
     | 
| 
      
 22 
     | 
    
         
            +
              portIndex: 0
         
     | 
| 
      
 23 
     | 
    
         
            +
              protocol: TCP
         
     | 
| 
      
 24 
     | 
    
         
            +
              timeoutSeconds: 30
         
     | 
| 
         @@ -0,0 +1,18 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ---
         
     | 
| 
      
 2 
     | 
    
         
            +
            cmd: while true ; do echo "i got probed ..." ; /bin/nc -l -p $PORT0 ; done
         
     | 
| 
      
 3 
     | 
    
         
            +
            cpus: 0.5
         
     | 
| 
      
 4 
     | 
    
         
            +
            env:
         
     | 
| 
      
 5 
     | 
    
         
            +
              APPLICATION_NAME: public-search-germany-webapp
         
     | 
| 
      
 6 
     | 
    
         
            +
              CONFIG_ASSEMBLER_BASE_URL: http://mobile-config-assembler.service.consul/config-assembler
         
     | 
| 
      
 7 
     | 
    
         
            +
              DATACENTER_NUMBER: '666'
         
     | 
| 
      
 8 
     | 
    
         
            +
              JAVA_XMS: 252m
         
     | 
| 
      
 9 
     | 
    
         
            +
              JAVA_XMX: 504m
         
     | 
| 
      
 10 
     | 
    
         
            +
              MYMACRO_TEST:  ABC-%%MACRO_TEST%%-DEFG-%%MACRO_TEST%%-HIJKL 
         
     | 
| 
      
 11 
     | 
    
         
            +
              SERVERCLASS_NAME: pubse
         
     | 
| 
      
 12 
     | 
    
         
            +
              SERVICE_8009_NAME: public-search-germany-webapp
         
     | 
| 
      
 13 
     | 
    
         
            +
              SERVICE_8009_TAGS: ajp
         
     | 
| 
      
 14 
     | 
    
         
            +
            id: content-webapp
         
     | 
| 
      
 15 
     | 
    
         
            +
            instances: 1
         
     | 
| 
      
 16 
     | 
    
         
            +
            mem: 32
         
     | 
| 
      
 17 
     | 
    
         
            +
            uris: []
         
     | 
| 
      
 18 
     | 
    
         
            +
            healthChecks: []
         
     | 
| 
         @@ -0,0 +1,67 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            {
         
     | 
| 
      
 2 
     | 
    
         
            +
                "args": [
         
     | 
| 
      
 3 
     | 
    
         
            +
                    "properties.py && FOO=\"`cat /opt/etc/public-search-germany-webapp.properties | grep -v '^\\s*#' | grep -E '.+=.+'`\"; echo $FOO; echo; env $FOO; echo; env $FOO hostName=$HOSTNAME backend.instance.name=$HOSTNAME java -Dhttp.port=8080 -Dajp.port=8009 -Dinstance.confdir=file:///opt/etc -Dbackend.logdir=$MESOS_SANDBOX -Dlog.rootDir=$MESOS_SANDBOX -DlogDir=$MESOS_SANDBOX $CMD_OPTS -Xmx$JAVA_XMX -Xms$JAVA_XMS -jar $MESOS_SANDBOX/public-search-germany-webapp*.jar"
         
     | 
| 
      
 4 
     | 
    
         
            +
                ],
         
     | 
| 
      
 5 
     | 
    
         
            +
                "cmd": null,
         
     | 
| 
      
 6 
     | 
    
         
            +
                "container": {
         
     | 
| 
      
 7 
     | 
    
         
            +
                    "docker": {
         
     | 
| 
      
 8 
     | 
    
         
            +
                        "image": "dockerregistry.mobile.rz/mobile-java8:latest",
         
     | 
| 
      
 9 
     | 
    
         
            +
                        "network": "BRIDGE",
         
     | 
| 
      
 10 
     | 
    
         
            +
                        "portMappings": [
         
     | 
| 
      
 11 
     | 
    
         
            +
                            {
         
     | 
| 
      
 12 
     | 
    
         
            +
                                "containerPort": 8080,
         
     | 
| 
      
 13 
     | 
    
         
            +
                                "hostPort": 0,
         
     | 
| 
      
 14 
     | 
    
         
            +
                                "protocol": "tcp"
         
     | 
| 
      
 15 
     | 
    
         
            +
                            },
         
     | 
| 
      
 16 
     | 
    
         
            +
                            {
         
     | 
| 
      
 17 
     | 
    
         
            +
                                "containerPort": 8009,
         
     | 
| 
      
 18 
     | 
    
         
            +
                                "hostPort": 0,
         
     | 
| 
      
 19 
     | 
    
         
            +
                                "protocol": "tcp"
         
     | 
| 
      
 20 
     | 
    
         
            +
                            }
         
     | 
| 
      
 21 
     | 
    
         
            +
                        ]
         
     | 
| 
      
 22 
     | 
    
         
            +
                    },
         
     | 
| 
      
 23 
     | 
    
         
            +
                    "type": "DOCKER"
         
     | 
| 
      
 24 
     | 
    
         
            +
                },
         
     | 
| 
      
 25 
     | 
    
         
            +
                "cpus": 0.1,
         
     | 
| 
      
 26 
     | 
    
         
            +
                "env": {
         
     | 
| 
      
 27 
     | 
    
         
            +
                    "APPLICATION_NAME": "public-search-germany-webapp",
         
     | 
| 
      
 28 
     | 
    
         
            +
                    "CMD_OPTS": "",
         
     | 
| 
      
 29 
     | 
    
         
            +
                    "CONFIG_ASSEMBLER_BASE_URL": "http://mobile-config-assembler.service.consul/config-assembler",
         
     | 
| 
      
 30 
     | 
    
         
            +
                    "DATACENTER_NUMBER": "44",
         
     | 
| 
      
 31 
     | 
    
         
            +
            	"MACRO_TEST": "this should be defined: %%MACRO_TEST%%",
         
     | 
| 
      
 32 
     | 
    
         
            +
                    "JAVA_XMS": "252m",
         
     | 
| 
      
 33 
     | 
    
         
            +
                    "JAVA_XMX": "504m",
         
     | 
| 
      
 34 
     | 
    
         
            +
                    "SERVERCLASS_NAME": "pubse",
         
     | 
| 
      
 35 
     | 
    
         
            +
                    "SERVICE_8009_NAME": "public-search-germany-webapp",
         
     | 
| 
      
 36 
     | 
    
         
            +
                    "SERVICE_8009_TAGS": "ajp",
         
     | 
| 
      
 37 
     | 
    
         
            +
                    "SERVICE_8080_CHECK_SCRIPT": "curl --fail --silent $HOST_IP:$SERVICE_PORT/fz/release-info",
         
     | 
| 
      
 38 
     | 
    
         
            +
                    "SERVICE_8080_NAME": "public-search-germany-webapp",
         
     | 
| 
      
 39 
     | 
    
         
            +
                    "SERVICE_8080_TAGS": "http,haproxy"
         
     | 
| 
      
 40 
     | 
    
         
            +
                },
         
     | 
| 
      
 41 
     | 
    
         
            +
                "healthChecks": [
         
     | 
| 
      
 42 
     | 
    
         
            +
                    {
         
     | 
| 
      
 43 
     | 
    
         
            +
                        "gracePeriodSeconds": 30,
         
     | 
| 
      
 44 
     | 
    
         
            +
                        "intervalSeconds": 10,
         
     | 
| 
      
 45 
     | 
    
         
            +
                        "maxConsecutiveFailures": 3,
         
     | 
| 
      
 46 
     | 
    
         
            +
                        "portIndex": 0,
         
     | 
| 
      
 47 
     | 
    
         
            +
                        "protocol": "TCP",
         
     | 
| 
      
 48 
     | 
    
         
            +
                        "timeoutSeconds": 30
         
     | 
| 
      
 49 
     | 
    
         
            +
                    },
         
     | 
| 
      
 50 
     | 
    
         
            +
                    {
         
     | 
| 
      
 51 
     | 
    
         
            +
                        "gracePeriodSeconds": 30,
         
     | 
| 
      
 52 
     | 
    
         
            +
                        "intervalSeconds": 10,
         
     | 
| 
      
 53 
     | 
    
         
            +
                        "maxConsecutiveFailures": 3,
         
     | 
| 
      
 54 
     | 
    
         
            +
                        "path": "/fz/release-info",
         
     | 
| 
      
 55 
     | 
    
         
            +
                        "portIndex": 0,
         
     | 
| 
      
 56 
     | 
    
         
            +
                        "protocol": "HTTP",
         
     | 
| 
      
 57 
     | 
    
         
            +
                        "timeoutSeconds": 30
         
     | 
| 
      
 58 
     | 
    
         
            +
                    }
         
     | 
| 
      
 59 
     | 
    
         
            +
                ],
         
     | 
| 
      
 60 
     | 
    
         
            +
                "id": "public-search-germany-webapp",
         
     | 
| 
      
 61 
     | 
    
         
            +
                "instances": 4,
         
     | 
| 
      
 62 
     | 
    
         
            +
                "mem": 512,
         
     | 
| 
      
 63 
     | 
    
         
            +
                "storeUrls": [
         
     | 
| 
      
 64 
     | 
    
         
            +
                    "http://maven-download.mobile.rz/maven/hosted-mobile-deployment-productive-releases/de/mobile/public-search-germany-webapp/ecs-1558-gb70c745/public-search-germany-webapp-ecs-1558-gb70c745.jar"
         
     | 
| 
      
 65 
     | 
    
         
            +
                ],
         
     | 
| 
      
 66 
     | 
    
         
            +
                "uris": []
         
     | 
| 
      
 67 
     | 
    
         
            +
            }
         
     |