cloudspin-stack 0.1.7 → 0.1.8

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,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: '09f576357a24456f36f68485eb0cdfcc4236e953'
4
- data.tar.gz: 4d014c6c8978d8e0465174fc313c4d301f614f0e
3
+ metadata.gz: 4170afe9007ab5cebf6f4e58af38922acc5fce87
4
+ data.tar.gz: 8c5c4ce80a36b5466f00a6b12c6128a9d39876a8
5
5
  SHA512:
6
- metadata.gz: 591b428a3e10c2d7e8c753120c7bb29c5bc3a53b336aeb1046359011e0d9ccee679db5a58aec5f6298d072d70c9ce7f4ae363f381fd8fd280279dc194a4cba51
7
- data.tar.gz: c8e033b0cff15d03bf9d07086d7aaeb85082a234f5e31439d8ae31142316f837cfe83e62b94c76da6b3ef03f37c48357345629e992163008cd4f8e6ffdd020f6
6
+ metadata.gz: da540b6e8568124062af22ac849116136ab90bce97ad40ef05a9f3b8dd4689315af237503e4ee4b1453d4d64bc0f593c87c3b2f0245b868a007b0a5334c45ef4
7
+ data.tar.gz: d31bf8166024b87d4637d5b3519a69e9b95a3a853931bccd0eab9583ca7fd902fb8397c9099a536e2b12cace39eab1759034a93e84ebaca6053f89d4defffe33
@@ -33,33 +33,33 @@ module Cloudspin
33
33
  :default => Util.full_path_from_local('./state'),
34
34
  :desc => 'Folder to create and store local state'
35
35
 
36
- desc 'up', 'Create or update the stack instance'
36
+ desc 'up INSTANCE_ID', 'Create or update the stack instance'
37
37
  option :dry, :type => :boolean, :default => false
38
38
  option :plan, :type => :boolean, :default => false
39
- def up
39
+ def up(id)
40
40
  if options[:plan] && options[:dry]
41
- puts instance.plan_dry
41
+ puts instance(id).plan_dry
42
42
  elsif options[:plan] && ! options[:dry]
43
- puts instance.plan
43
+ puts instance(id).plan
44
44
  elsif ! options[:plan] && options[:dry]
45
- puts instance.up_dry
45
+ puts instance(id).up_dry
46
46
  else
47
- instance.up
47
+ instance(id).up
48
48
  end
49
49
  end
50
50
 
51
51
  desc 'down', 'Destroy the stack instance'
52
52
  option :dry, :type => :boolean, :default => false
53
53
  option :plan, :type => :boolean, :default => false
54
- def down
54
+ def down(id)
55
55
  if options[:plan] && options[:dry]
56
- puts instance.plan_dry(plan_destroy: true)
56
+ puts instance(id).plan_dry(plan_destroy: true)
57
57
  elsif options[:plan] && ! options[:dry]
58
- puts instance.plan(plan_destroy: true)
58
+ puts instance(id).plan(plan_destroy: true)
59
59
  elsif ! options[:plan] && options[:dry]
60
- puts instance.down_dry
60
+ puts instance(id).down_dry
61
61
  else
62
- instance.down
62
+ instance(id).down
63
63
  end
64
64
  end
65
65
 
@@ -75,8 +75,9 @@ module Cloudspin
75
75
 
76
76
  no_commands do
77
77
 
78
- def instance
78
+ def instance(id)
79
79
  stack = Cloudspin::Stack::Instance.new(
80
+ id: id,
80
81
  stack_definition: stack_definition,
81
82
  backend_config: {},
82
83
  working_folder: options[:work],
@@ -7,17 +7,21 @@ module Cloudspin
7
7
 
8
8
  include FileUtils
9
9
 
10
- attr_reader :working_folder,
10
+ attr_reader :id,
11
+ :working_folder,
11
12
  :backend_config,
12
13
  :statefile_folder,
13
14
  :parameter_values,
14
15
  :resource_values
15
16
 
16
- def initialize(stack_definition:,
17
+ def initialize(id:,
18
+ stack_definition:,
17
19
  backend_config:,
18
20
  working_folder:,
19
21
  statefile_folder:
20
22
  )
23
+ validate_id(id)
24
+ @id = id
21
25
  @stack_definition = stack_definition
22
26
  @backend_config = backend_config
23
27
  @working_folder = working_folder
@@ -26,6 +30,12 @@ module Cloudspin
26
30
  @resource_values = {}
27
31
  end
28
32
 
33
+ def validate_id(raw_id)
34
+ raise "Stack instance ID '#{raw_id}' won't work. It needs to work as a filename." if /[^0-9A-Za-z.\-\_]/ =~ raw_id
35
+ raise "Stack instance ID '#{raw_id}' won't work. No double dots allowed." if /\.\./ =~ raw_id
36
+ raise "Stack instance ID '#{raw_id}' won't work. First character should be a letter." if /^[^A-Za-z]/ =~ raw_id
37
+ end
38
+
29
39
  def add_parameter_values(new_parameter_values)
30
40
  @parameter_values.merge!(new_parameter_values)
31
41
  end
@@ -123,7 +133,7 @@ module Cloudspin
123
133
  end
124
134
 
125
135
  def terraform_statefile
126
- statefile_folder + "/default_name.tfstate"
136
+ statefile_folder + "/stack-#{id}.tfstate"
127
137
  end
128
138
 
129
139
  end
@@ -1,5 +1,5 @@
1
1
  module Cloudspin
2
2
  module Stack
3
- VERSION = '0.1.7'
3
+ VERSION = '0.1.8'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cloudspin-stack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - 'kief '
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-08-21 00:00:00.000000000 Z
11
+ date: 2018-08-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ruby-terraform