sakurraform 0.3.0 → 0.4.0

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: 2789e5c4f89556a579e74af00b800dcf01b460d9
4
- data.tar.gz: 66a5d6c506918995fd0ffa11824d3fa90a2b8d1a
3
+ metadata.gz: a3cce78309426bf6755b1fbf2d3cfca419611c7a
4
+ data.tar.gz: eea0d179c2a9f170c40ad87b8be7f0f221fbc76a
5
5
  SHA512:
6
- metadata.gz: 3d53a035d553493257c5a15af8040e1185a7b8b5687c0a5fb3e28bea2420f30beeef1cf22279c995030585122fc72f550d5eb685ef80fa60e83684c2578e30d3
7
- data.tar.gz: cf28520c2456bd8ef03a4d6b391ae8a835606ed8bb18a4729e04a8644bf83f14a7dca9389d30de09e6dc7837901f8278c2588943d29956774cb3324a666f73be
6
+ metadata.gz: 17348e6c25ad8d48838ef40361c5724dc59283da47a23f77da8af73210106a54615c9b5c093333e6532b09d11132e446e467c5624f85df54ddb38595fded94b8
7
+ data.tar.gz: 8f856f4d79dbf7420a690786359c570ff7213d2eaaad2e0c1792e67040da569293ac1cdbe835dd9d18be61066216b902aaf82751ca7f7a923ba2da1524236842
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # CHANGELOG of sakurraform
2
2
 
3
+ ## Not release or WIP
4
+
5
+ ## v0.4.0
6
+
7
+ - Support Simple L2 Switch
8
+ - Support add interfaces for server.
9
+ - SUpport connect interfaces to switch.
10
+
3
11
  ## v0.3.0
4
12
 
5
13
  - Fix: build status crashes if other resources exists.
@@ -27,9 +27,16 @@ module SakurraForm
27
27
  unless net.resource_id
28
28
  net.resource_id = name_plus_uuid(net.name)
29
29
  options = net.configuration.first.merge({'name' => net.resource_id})
30
- say("Create new network #{net.name}")
31
- router = network.routers.create(options)
32
- switch = network.switches.find {|s| s.id == router.id}
30
+ say("Create new #{net.mode} #{net.name}")
31
+ case net.mode
32
+ when 'router'
33
+ router = network.routers.create(options)
34
+ switch = network.switches.find {|s| s.id == router.id}
35
+ when 'switch'
36
+ switch = network.switches.create(options)
37
+ else
38
+ raise "Not supported mode #{net.mode}..."
39
+ end
33
40
  create_file "state/network/#{net.resource_id}.yml", switch.all_attributes.to_yaml
34
41
  else
35
42
  say("#{net.name} already available as #{net.resource_id}")
@@ -68,6 +75,20 @@ module SakurraForm
68
75
  disk_id = server.disks.first['ID']
69
76
  say("Associate #{sv_ipaddress} to #{sv.name}")
70
77
  volume.associate_ip_to_disk(disk_id, subnet)
78
+
79
+ ## Regist Interfaces
80
+ if sv.configuration.first["interfaces"]
81
+ ifs = sv.configuration.first["interfaces"]
82
+ c_switches = ifs.map do |target_sw|
83
+ say("Creating interface connected to #{target_sw}...")
84
+ resolve_sakura_id_by_combined(target_sw)
85
+ end
86
+ c_switches.map do |t_sw|
87
+ new_if = network.interfaces.regist_onto_server(server.id)
88
+ network.interfaces.connect_to_switch(new_if.id, t_sw)
89
+ end
90
+ end
91
+
71
92
  server.boot
72
93
  create_file "state/server/#{sv.resource_id}.yml", server.all_attributes.to_yaml
73
94
  else
@@ -124,7 +145,7 @@ module SakurraForm
124
145
  col_networks.resources.each do |net|
125
146
  if net.remote_state
126
147
  # puts net.remote_state
127
- if net.remote_state[:internet].any?
148
+ if net.remote_state[:internet] && net.remote_state[:internet].any?
128
149
  say("Deleting Router #{net.resource_id} ...")
129
150
  network.delete_router(net.remote_state[:internet]["ID"])
130
151
  else
@@ -19,7 +19,7 @@ module SakurraForm
19
19
  output["Networks"] = build_state_network(col_network)
20
20
  else
21
21
  Formatador.display_line('[green]Nework resources[/]')
22
- Formatador.display_table(build_state_network(col_network), [:name, :sakurraform_name, :sakura_id, :subnets, :gateway])
22
+ Formatador.display_table(build_state_network(col_network), [:name, :mode, :sakurraform_name, :sakura_id, :subnets, :gateway])
23
23
  say()
24
24
  end
25
25
 
@@ -31,7 +31,7 @@ module SakurraForm
31
31
  say(JSON.pretty_generate(output))
32
32
  else
33
33
  Formatador.display_line('[green]Server resources[/]')
34
- Formatador.display_table(build_state_server(col_server), [:name, :sakurraform_name, :sakura_id, :ipaddress, :status, :last_state_changed])
34
+ Formatador.display_table(build_state_server(col_server), [:name, :sakurraform_name, :sakura_id, :ipaddress, :network, :status, :last_state_changed])
35
35
  end
36
36
  if options[:sync]
37
37
  col_server.resources.each do |r|
@@ -52,10 +52,13 @@ module SakurraForm
52
52
  table_datum = {}
53
53
  # pp resource
54
54
  table_datum[:name] = resource.name
55
+ table_datum[:mode] = resource.mode
55
56
  table_datum[:sakurraform_name] = resource.resource_id ? resource.resource_id : 'not created'
56
57
  table_datum[:sakura_id] = resource.remote_state ? resource.remote_state[:id] : 'not created'
57
- table_datum[:subnets] = resource.remote_state && resource.remote_state[:subnets] ? resource.remote_state[:subnets].first['NetworkAddress'] + '/' + resource.remote_state[:subnets].first['NetworkMaskLen'].to_s : 'not created'
58
- table_datum[:gateway] = resource.remote_state && resource.remote_state[:subnets] ? resource.remote_state[:subnets].first['DefaultRoute'] : 'not created'
58
+ if resource.mode == 'router'
59
+ table_datum[:subnets] = resource.remote_state && resource.remote_state[:subnets] ? resource.remote_state[:subnets].first['NetworkAddress'] + '/' + resource.remote_state[:subnets].first['NetworkMaskLen'].to_s : 'not created'
60
+ table_datum[:gateway] = resource.remote_state && resource.remote_state[:subnets] ? resource.remote_state[:subnets].first['DefaultRoute'] : 'not created'
61
+ end
59
62
 
60
63
  table_data << table_datum
61
64
  end
@@ -66,7 +69,7 @@ module SakurraForm
66
69
  table_data = []
67
70
  col_server.resources.each do |resource|
68
71
  table_datum = {}
69
- # pp resource
72
+ # pp resource
70
73
  table_datum[:name] = resource.name
71
74
  table_datum[:sakurraform_name] = resource.resource_id ? resource.resource_id : 'not created'
72
75
  table_datum[:sakura_id] = resource.remote_state ? resource.remote_state[:id] : 'not created'
@@ -74,6 +77,8 @@ module SakurraForm
74
77
  table_datum[:last_state_changed] = resource.remote_state && resource.remote_state[:instance] ? resource.remote_state[:instance]['StatusChangedAt'] : 'not created'
75
78
  table_datum[:ipaddress] = resource.remote_state && resource.remote_state[:interfaces] ? resource.remote_state[:interfaces].first['UserIPAddress'] : 'not created'
76
79
 
80
+ table_datum[:network] = resource.remote_state && resource.remote_state[:interfaces] ? resource.remote_state[:interfaces].map {|i| i['Switch']['ID'] } : 'not created'
81
+
77
82
  table_data << table_datum
78
83
  end
79
84
  table_data
@@ -1,6 +1,16 @@
1
1
  module SakurraForm
2
2
  class Resource
3
3
  class Network < SakurraForm::Resource::Base
4
+ attr_reader :mode
5
+ def initialize(name, enable_remote = false)
6
+ super
7
+ if @configuration.first.has_key?(:networkmasklen)
8
+ @mode = 'router'
9
+ else
10
+ @mode = 'switch'
11
+ end
12
+ end
13
+
4
14
  def collect_remote_state
5
15
  return {} unless @resource_id
6
16
  network = Fog::Network[:sakuracloud]
@@ -2,6 +2,5 @@
2
2
  network:
3
3
  - name: defaultrouter
4
4
  networkmasklen: 28
5
- - name: defaultrouter2
6
- networkmasklen: 28
5
+ - name: localswitch1
7
6
 
@@ -7,6 +7,8 @@ server:
7
7
  diskplan: 4
8
8
  sourcearchive: 112500463685
9
9
  switch: network[defaultrouter]
10
+ interfaces:
11
+ - network[localswitch1]
10
12
  meta:
11
13
  network_offset: 3
12
14
  chef_environment: null
@@ -20,6 +22,8 @@ server:
20
22
  diskplan: 4
21
23
  sourcearchive: 112500463685
22
24
  switch: network[defaultrouter]
25
+ interfaces:
26
+ - network[localswitch1]
23
27
  meta:
24
28
  network_offset: 4
25
29
  chef_environment: null
@@ -1,3 +1,3 @@
1
1
  module SakurraForm
2
- VERSION = "0.3.0"
2
+ VERSION = "0.4.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sakurraform
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - sawanoboly
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-09 00:00:00.000000000 Z
11
+ date: 2015-09-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor