knife-nc 0.0.1 → 0.0.2

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.
data/Gemfile CHANGED
@@ -1,4 +1,3 @@
1
1
  source "http://rubygems.org"
2
2
 
3
- # Specify your gem's dependencies in knife-rackspace.gemspec
4
3
  gemspec
data/HISTORY.md ADDED
@@ -0,0 +1,20 @@
1
+ # 変更履歴
2
+
3
+ ## 0.0.2
4
+
5
+ * gem install knife-nc で nifty-cloud-sdk gem もインストールされるようになった
6
+ * nc server delete コマンドの、サーバ停止しているのに停止しようとしてエラーになるバグを修正した
7
+ * nc server delete コマンドの、disable_api_termination が true になっていると削除できないバグを修正した
8
+ * nc server list コマンドの、サーバが 1 台も存在しないとエラー終了してしまうバグを修正した
9
+
10
+ ## 0.0.1
11
+
12
+ version 0.0.0 がインストールされているとうまく動かないことがあるかもしれないので、gem uninstall knife-nc -v 0.0.0 したほうがいいかもです。
13
+
14
+ * NIFTY Cloud 上の主要な 8 イメージに対応した
15
+ * 起動時スクリプトに対応した
16
+ * -R または --ssh-passphrase で SSH パスフレーズが指定できるようになった
17
+
18
+ ## 0.0.0
19
+
20
+ * 初期インポート
data/README.md CHANGED
@@ -96,7 +96,6 @@ knife bootstrap からこのスクリプトを利用するには下記のよう
96
96
 
97
97
  ## TODO
98
98
 
99
- * nc server create の -U オプション (起動スクリプト指定) の動作確認ができていない
100
99
  * nc server create の --template-file オプション (ブートストラップ用テンプレート指定) の動作確認ができていない
101
100
 
102
101
  ## ライセンス
data/knife-nc.gemspec CHANGED
@@ -12,6 +12,7 @@ Gem::Specification.new do |s|
12
12
  s.summary = "NIFTY Cloud Support for Chef's Knife Command"
13
13
  s.description = s.summary
14
14
  s.extra_rdoc_files = ["README.md", "LICENSE" ]
15
+ s.add_dependency "nifty-cloud-sdk", ">= 1.7"
15
16
 
16
17
  s.files = `git ls-files`.split("\n")
17
18
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
@@ -42,6 +42,11 @@ class Chef
42
42
  :long => "--node-name NAME",
43
43
  :description => "The name of the node and client to delete, if it differs from the server name. Only has meaning when used with the '--purge' option."
44
44
 
45
+ option :force,
46
+ :long => "--force",
47
+ :default => false,
48
+ :description => "Force to delete server by changing the server's disableApiTermination attribute to false."
49
+
45
50
  # Extracted from Chef::Knife.delete_object, because it has a
46
51
  # confirmation step built in... By specifying the '--purge'
47
52
  # flag (and also explicitly confirming the server destruction!)
@@ -78,15 +83,33 @@ class Chef
78
83
  puts "\n"
79
84
  confirm("Do you really want to delete this server")
80
85
 
81
- print "\n#{ui.color("Waiting for server to shutdown", :magenta)}"
82
- connection.stop_instances(:instance_id => instance_id, :force => true)
83
- while server.instanceState.name != 'stopped'
84
- print "."
85
- server = connection.describe_instances(:instance_id => instance_id).reservationSet.item.first.instancesSet.item.first
86
- sleep 5
86
+ if server.instanceState.name != 'stopped'
87
+ print "\n#{ui.color("Waiting for server to shutdown", :magenta)}"
88
+ connection.stop_instances(:instance_id => instance_id, :force => true)
89
+ while server.instanceState.name != 'stopped'
90
+ print "."
91
+ server = connection.describe_instances(:instance_id => instance_id).reservationSet.item.first.instancesSet.item.first
92
+ sleep 5
93
+ end
94
+ puts("done\n")
87
95
  end
88
96
 
89
- puts("done\n")
97
+ attribute = connection.describe_instance_attribute(:instance_id => instance_id, :attribute => 'disableApiTermination')
98
+ if attribute.disableApiTermination.value != 'false'
99
+ if config[:force] == false
100
+ ui.error("Server's 'disableApiTermination' attribute is true. Use --force option to delete server.")
101
+ exit 1
102
+ else
103
+ print "\n#{ui.color("Enabling API termination for server", :magenta)}"
104
+ connection.modify_instance_attribute(:instance_id => instance_id, :attribute => 'disableApiTermination', :value => 'false')
105
+ while attribute.disableApiTermination.value != 'false'
106
+ print "."
107
+ attribute = connection.describe_instance_attribute(:instance_id => instance_id, :attribute => 'disableApiTermination')
108
+ sleep 5
109
+ end
110
+ puts("done\n")
111
+ end
112
+ end
90
113
 
91
114
  connection.terminate_instances(:instance_id => instance_id)
92
115
 
@@ -41,25 +41,28 @@ class Chef
41
41
  ui.color('Security Group', :bold),
42
42
  ui.color('State', :bold)
43
43
  ]
44
- connection.describe_instances.reservationSet.item.each do |instance|
45
- server = instance.instancesSet.item.first
46
- group = instance.groupSet
47
- server_list << server.instanceId
48
- server_list << server.ipAddress.to_s
49
- server_list << server.privateIpAddress.to_s
50
- server_list << server.instanceType
51
- server_list << server.imageId
52
- server_list << server.keyName
53
- server_list << (group ? group.item.first.groupId : '')
54
- server_list << begin
55
- state = server.instanceState.name
56
- case state
57
- when 'sotopped', 'warning', 'waiting', 'creating', 'suspending', 'uploading', 'import_error'
58
- ui.color(state, :red)
59
- when 'pending'
60
- ui.color(state, :yellow)
61
- else
62
- ui.color(state, :green)
44
+ set = connection.describe_instances.reservationSet
45
+ if set
46
+ set.item.each do |instance|
47
+ server = instance.instancesSet.item.first
48
+ group = instance.groupSet
49
+ server_list << server.instanceId
50
+ server_list << server.ipAddress.to_s
51
+ server_list << server.privateIpAddress.to_s
52
+ server_list << server.instanceType
53
+ server_list << server.imageId
54
+ server_list << server.keyName
55
+ server_list << (group ? group.item.first.groupId : '')
56
+ server_list << begin
57
+ state = server.instanceState.name
58
+ case state
59
+ when 'sotopped', 'warning', 'waiting', 'creating', 'suspending', 'uploading', 'import_error'
60
+ ui.color(state, :red)
61
+ when 'pending'
62
+ ui.color(state, :yellow)
63
+ else
64
+ ui.color(state, :green)
65
+ end
63
66
  end
64
67
  end
65
68
  end
@@ -1,6 +1,6 @@
1
1
  module Knife
2
2
  module Nc
3
- VERSION = "0.0.1"
3
+ VERSION = "0.0.2"
4
4
  MAJOR, MINOR, TINY = VERSION.split('.')
5
5
  end
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: knife-nc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,8 +9,19 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-03 00:00:00.000000000Z
13
- dependencies: []
12
+ date: 2012-10-20 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: nifty-cloud-sdk
16
+ requirement: &70198309663100 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '1.7'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70198309663100
14
25
  description: NIFTY Cloud Support for Chef's Knife Command
15
26
  email:
16
27
  - tidnlyam@gmail.com
@@ -23,6 +34,7 @@ files:
23
34
  - .gitignore
24
35
  - .rspec
25
36
  - Gemfile
37
+ - HISTORY.md
26
38
  - LICENSE
27
39
  - README.md
28
40
  - Rakefile
@@ -58,9 +70,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
58
70
  version: '0'
59
71
  requirements: []
60
72
  rubyforge_project:
61
- rubygems_version: 1.8.13
73
+ rubygems_version: 1.8.10
62
74
  signing_key:
63
75
  specification_version: 3
64
76
  summary: NIFTY Cloud Support for Chef's Knife Command
65
77
  test_files:
66
78
  - spec/spec_helper.rb
79
+ has_rdoc: true