marathon_deploy 0.1.41 → 0.1.43

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- OGI0MDViY2U1ZWZlYzhjNmJhMzUxNDkzMGZlZDRkODgyN2JiZmUyZg==
4
+ NDkxMGI4MjYyMjRhNjBjNTU0MzBjNjM2MjlkYzZjY2Y1NzY0NmViNQ==
5
5
  data.tar.gz: !binary |-
6
- NmJkMTBiYmRlOGRlMzljYTU2YTNlMTRkZTIwMWExN2I4ZDkxYzRjNA==
6
+ ZWIxNDUyNzVlNGNkZjEwYzI1YmJkMzA0NjVmYjk3NGNmMzVjZmZiMg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- Njk3NDVkOGZiYjNmNDVkNzE0Njc2Nzg0NjIwMDhlNzEyZWU3Yjc4MGU4NWQx
10
- NjAzZjhhOWJiODgyMjBmYmUwMWUwNTZmNzZjOWFhNzA2MzMwNjE4NjI4OTg5
11
- YzRhZGMyMDU2NmM1MDgwMWJhYTc2OTI5YzY0NGIyODNmNDE2NGQ=
9
+ ZjNkZTQzYjBkN2I1Y2MyNWQ0MmQyYmE3MzI4ODA5ODY1ODcxOTExYmNjMzVj
10
+ ZmIxYWM2Y2FiYTU2NTNjZjgzYjRjZjVkYThkYTdmYjRhZDFmZDc0NGJlMzM5
11
+ MTA2MTc2OGFmMDA1MDQ1ZjViYzc5ZjE2MDZjYjMyMmEzYWJhOTk=
12
12
  data.tar.gz: !binary |-
13
- MTgxM2RmYTlhMDQwMjU4ZDU2ODkxZjk5NDcxMjc1MDhjNjlmOGViMmJkZmYx
14
- MjNkOGQ5NTg0YjI1MWFjNTgwZTc5NDYzMTBmMWRkMTIzNTExZTUxYzQyNzRj
15
- Nzc5NjEzMjMwYzQzYzQ4OTQzYzcwODAxODVkYjljNjhkODk5ODk=
13
+ ZjNiNjQwMzA3YzQ5YWEzMGU3OWQzYTIzYzIwNzc4MDY4ZTJiYmM4NGYzNTNj
14
+ MDM5MTU5MDgwNWZlMWNhZWU5MTkwNjBkYTVmZGY2Mjk2MjYxYWFlNWU3ZmIy
15
+ NTVmNDAxODg3NGIyZDI4Y2QxMjQ4YTMzOWQ4NzRjY2VmZTI4ZTI=
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- ![Travis Build Status](https://travis-ci.org/joncolby/marathon_deploy.svg?branch=master)
1
+ [![Build Status](https://travis-ci.org/eBayClassifiedsGroup/marathon_deploy.svg?branch=master)](https://travis-ci.org/eBayClassifiedsGroup/marathon_deploy)
2
2
 
3
3
  # Marathon Deploy
4
4
 
data/bin/marathon_deploy CHANGED
@@ -11,7 +11,7 @@ require 'logger'
11
11
 
12
12
  STDOUT.sync = true
13
13
  options = {}
14
-
14
+
15
15
  # DEFAULTS
16
16
  DEFAULT_DEPLOYFILE = MarathonDeploy::MarathonDefaults::DEFAULT_DEPLOYFILE
17
17
  options[:debug] = MarathonDeploy::MarathonDefaults::DEFAULT_LOGLEVEL
@@ -20,6 +20,7 @@ options[:marathon_endpoints] = MarathonDeploy::MarathonDefaults::DEFAULT_PREPROD
20
20
  options[:logfile] = MarathonDeploy::MarathonDefaults::DEFAULT_LOGFILE
21
21
  options[:force] = MarathonDeploy::MarathonDefaults::DEFAULT_FORCE_DEPLOY
22
22
  options[:noop] = MarathonDeploy::MarathonDefaults::DEFAULT_NOOP
23
+ options[:remove_elements] = MarathonDeploy::MarathonDefaults::DEFAULT_REMOVE_ELEMENTS
23
24
 
24
25
 
25
26
  OptionParser.new do |opts|
@@ -42,20 +43,23 @@ OptionParser.new do |opts|
42
43
  puts "#{$0} version #{opts.release}"
43
44
  exit
44
45
  end
45
-
46
+
46
47
  opts.on("-f", "--force", "Force deployment when sending same deploy JSON to Marathon") do |f|
47
48
  options[:force] = true
48
49
  end
49
-
50
+
50
51
  opts.on("-n", "--noop", "No action. Just display what would be performed.") do |f|
51
52
  options[:noop] = true
52
53
  end
53
-
54
-
54
+
55
+ opts.on("-r", "--remove ELEMENTS", Array, "Remove elemensts from deploymnet plan (example -r :constraints,:healthChecks)") do |r|
56
+ options[:remove_elements] = r
57
+ end
58
+
55
59
  opts.on("-e", "--environment ENVIRONMENT", "Default: #{options[:environment]}" ) do |e|
56
60
  options[:environment] = e
57
61
  end
58
-
62
+
59
63
  opts.on_tail("-h", "--help", "Show this message") do
60
64
  puts opts
61
65
  puts " ----------------- Additional Info -----------------", <<-DESCRIPTION
@@ -102,9 +106,19 @@ marathon_endpoints = Array.new
102
106
  else
103
107
  marathon_endpoints = options[:marathon_endpoints]
104
108
  end
109
+
110
+ remove_elements = Array.new
111
+ if (options[:remove_elements].nil?)
112
+ remove_elements = MarathonDeploy::MarathonDefaults::DEFAULT_REMOVE_ELEMENTS
113
+ else
114
+ # converts quotes srtings in array to strings
115
+ remove_elements = options[:remove_elements].map do |n|
116
+ eval n if not MarathonDeploy::MarathonDefaults::DEFAULT_KEEP_ELEMENTS.include? n
117
+ end
118
+ end
105
119
 
106
120
  begin
107
- application = MarathonDeploy::Application.new(:deployfile => deployfile, :force => options[:force])
121
+ application = MarathonDeploy::Application.new(:deployfile => deployfile, :force => options[:force], :remove_elements => remove_elements)
108
122
  rescue MarathonDeploy::Error::IOError, MarathonDeploy::Error::UndefinedMacroError,MarathonDeploy::Error::MissingMarathonAttributesError,MarathonDeploy::Error::UnsupportedFileExtension => e
109
123
  $LOG.debug(e)
110
124
  $LOG.error(e.message)
@@ -13,7 +13,7 @@ module MarathonDeploy
13
13
  # @param [Hash] options hash for the application object
14
14
  # @option options [Boolean] :force force a deployment by including an environment variable containing a random string value in the json marathon payload
15
15
  # @option options [String] :deployfile file template and path. default deploy.yml in current directory
16
- def initialize(options={ :force => false, :deployfile => 'deploy.yml'})
16
+ def initialize(options={ :force => false, :deployfile => 'deploy.yml', :remove_elements => []})
17
17
 
18
18
  deployfile = options[:deployfile]
19
19
 
@@ -59,6 +59,7 @@ module MarathonDeploy
59
59
  @json = Utils.deep_symbolize(@json)
60
60
 
61
61
  add_identifier if (options[:force])
62
+ remove_elements(options[:remove_elements])
62
63
 
63
64
  inject_envs = ENV.select { |k,v| /^#{MarathonDeploy::MarathonDefaults::ENVIRONMENT_VARIABLE_PREFIX}/.match(k) }
64
65
  cleaned_envs = Hash[inject_envs.map { |k,v| [k.gsub(/^#{MarathonDeploy::MarathonDefaults::ENVIRONMENT_VARIABLE_PREFIX}/,''), v ] }]
@@ -78,7 +79,15 @@ module MarathonDeploy
78
79
  # Time.now.to_i
79
80
  @json[:env]['UNIQUE_ID'] = "#{id}_#{random}"
80
81
  end
81
-
82
+
83
+ def remove_elements(remove_array)
84
+ if (remove_array.is_a?(Array))
85
+ remove_array.each do |element|
86
+ @json.delete(element)
87
+ end
88
+ end
89
+ end
90
+
82
91
  def to_s
83
92
  JSON.pretty_generate(@json)
84
93
  end
@@ -20,6 +20,8 @@ module MarathonDeploy
20
20
  MARATHON_DEPLOYMENT_REST_PATH = '/v2/deployments/'
21
21
  DEFAULT_FORCE_DEPLOY = false
22
22
  DEFAULT_NOOP = false
23
+ DEFAULT_KEEP_ELEMENTS = [':cpus', ':mem', ':instances', ':env']
24
+ DEFAULT_REMOVE_ELEMENTS = []
23
25
  ENVIRONMENT_VARIABLE_PREFIX = 'MARATHON_DEPLOY_'
24
26
 
25
27
  @@preproduction_override = {
@@ -1,3 +1,3 @@
1
1
  module MarathonDeploy
2
- VERSION = "0.1.41"
2
+ VERSION = "0.1.43"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: marathon_deploy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.41
4
+ version: 0.1.43
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Colby
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-27 00:00:00.000000000 Z
11
+ date: 2015-09-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: logger