marathon_deploy 0.1.41 → 0.1.43

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 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