ruboty-niftycloud 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +22 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +54 -0
  6. data/Rakefile +2 -0
  7. data/lib/ruboty/handlers/niftycloud.rb +245 -0
  8. data/lib/ruboty/niftycloud.rb +27 -0
  9. data/lib/ruboty/niftycloud/actions/account_list.rb +13 -0
  10. data/lib/ruboty/niftycloud/actions/account_use.rb +24 -0
  11. data/lib/ruboty/niftycloud/actions/base.rb +60 -0
  12. data/lib/ruboty/niftycloud/actions/computing_address_list.rb +14 -0
  13. data/lib/ruboty/niftycloud/actions/computing_availability_zone_list.rb +14 -0
  14. data/lib/ruboty/niftycloud/actions/computing_image_list.rb +14 -0
  15. data/lib/ruboty/niftycloud/actions/computing_image_show.rb +14 -0
  16. data/lib/ruboty/niftycloud/actions/computing_instance_list.rb +13 -0
  17. data/lib/ruboty/niftycloud/actions/computing_instance_show.rb +15 -0
  18. data/lib/ruboty/niftycloud/actions/computing_key_pair_list.rb +13 -0
  19. data/lib/ruboty/niftycloud/actions/computing_load_balancer_list.rb +13 -0
  20. data/lib/ruboty/niftycloud/actions/computing_load_balancer_show.rb +14 -0
  21. data/lib/ruboty/niftycloud/actions/computing_region_list.rb +13 -0
  22. data/lib/ruboty/niftycloud/actions/computing_region_use.rb +13 -0
  23. data/lib/ruboty/niftycloud/actions/computing_security_group_list.rb +13 -0
  24. data/lib/ruboty/niftycloud/actions/computing_security_group_show.rb +14 -0
  25. data/lib/ruboty/niftycloud/actions/computing_ssl_certificate_list.rb +13 -0
  26. data/lib/ruboty/niftycloud/actions/computing_ssl_certificate_show.rb +14 -0
  27. data/lib/ruboty/niftycloud/actions/computing_volume_list.rb +13 -0
  28. data/lib/ruboty/niftycloud/actions/computing_volume_show.rb +14 -0
  29. data/lib/ruboty/niftycloud/actions/rdb_db_instance_list.rb +14 -0
  30. data/lib/ruboty/niftycloud/actions/rdb_db_instance_show.rb +14 -0
  31. data/lib/ruboty/niftycloud/version.rb +5 -0
  32. data/ruboty-niftycloud.gemspec +27 -0
  33. metadata +145 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: e4e05cb20e4e6eaa24e29d1d7a47c4d581ab8488
4
+ data.tar.gz: de9d5ced2ff824957bbaef354c6fce27ce52472c
5
+ SHA512:
6
+ metadata.gz: 5bb9db657b63536605b677ce6b1e37d38cff1edf99b9d61525d6da11c5c4de5424a12afc41f96417a56b6884fb133b0e6fd30b26d5748ae1915f63daaac77660
7
+ data.tar.gz: 641e7210f1bb29026bd97623ef54a07602091b158998a2ede7c25f8933e4b111e8e0e176cce68e9181e405690b646de7fa76d410f8bf3fda778db973cbef7b50
data/.gitignore ADDED
@@ -0,0 +1,22 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ *.bundle
19
+ *.so
20
+ *.o
21
+ *.a
22
+ mkmf.log
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in ruboty-niftycloud.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2015 tily
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,54 @@
1
+ # Ruboty::Niftycloud
2
+
3
+ Manage NIFTYCloud via Ruboty
4
+
5
+ ## Install
6
+
7
+ ```
8
+ # Gemfile
9
+ gem "ruboty-niftycloud"
10
+ ```
11
+
12
+ ## Usage
13
+
14
+ ```
15
+ @ruboty niftycloud account list - list accounts
16
+ @ruboty niftycloud account use <account or number> - use account
17
+ @ruboty niftycloud computing region list - list computing regions
18
+ @ruboty niftycloud computing region use - use computing region
19
+ @ruboty niftycloud computing availability zone list - list computing availability zones
20
+ @ruboty niftycloud computing instance list - list computing instances
21
+ @ruboty niftycloud computing instance show <instance_id> - show computing instance
22
+ @ruboty niftycloud computing key_pair list - list computing key pairs
23
+ @ruboty niftycloud computing security group list - list computing security groups
24
+ @ruboty niftycloud computing security group show <group name> - show computing security group
25
+ @ruboty niftycloud computing volume list - list computing volumes
26
+ @ruboty niftycloud computing volume show <volume id> - show computing volume
27
+ @ruboty niftycloud computing load_balancer list - list computing load balancers
28
+ @ruboty niftycloud computing load_balancer show <load balancer name> - show computing load balancer
29
+ @ruboty niftycloud computing address list - list computing addresses
30
+ @ruboty niftycloud computing image list - list computing images
31
+ @ruboty niftycloud computing image show <image id> - show computing image
32
+ @ruboty niftycloud computing ssl certificate list - list computing ssl certificates
33
+ @ruboty niftycloud computing ssl certificate show <fqdn id> - show computing ssl certificate
34
+ @ruboty niftycloud rdb db_instance list - list rdb db instances
35
+ @ruboty niftycloud rdb db_instance show <db_instance_id> - show rdb db instance
36
+ ```
37
+
38
+ ## ENV
39
+
40
+ ```
41
+ NIFTYCLOUD_ACCOUNTS - accounts to use (separated by comma)
42
+ NIFTYCLOUD_DEFAULT_ACCOUNT - default account
43
+ NIFTYCLOUD_ACCOUNT_ABC12345_DESCRIPTION - account's description
44
+ NIFTYCLOUD_ACCOUNT_ABC12345_ACCESS_KEY_ID - account's access key id
45
+ NIFTYCLOUD_ACCOUNT_ABC12345_SECRET_ACCESS_KEY - account's secret access key
46
+ ```
47
+
48
+ ## Contributing
49
+
50
+ 1. Fork it ( https://github.com/[my-github-username]/ruboty-niftycloud/fork )
51
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
52
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
53
+ 4. Push to the branch (`git push origin my-new-feature`)
54
+ 5. Create a new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+
@@ -0,0 +1,245 @@
1
+ p 'handl'
2
+ module Ruboty
3
+ module Handlers
4
+ class Niftycloud < Base
5
+ NIFTYCLOUD = "(?:niftycloud|nc)"
6
+
7
+ ACCOUNT = "(?:account|a)"
8
+ COMPUTING = "(?:computing|c)"
9
+ RDB = "(?:rdb|r)"
10
+
11
+ INSTANCE = "(?:instance|i)"
12
+ KEY_PAIR = "(?:key_pair|kp)"
13
+ SECURITY_GROUP = "(?:security_group|sg)"
14
+ VOLUME = "(?:volume|v)"
15
+ IMAGE = "(?:image)"
16
+ LOAD_BALANCER = "(?:load_balancer|lb)"
17
+ ADDRESS = "(?:address)"
18
+ SSL_CERTIFICATE = "(?:ssl_certificate|ssl)"
19
+ AVAILABILITY_ZONE = "(?:availability_zone|zone)"
20
+ DB_INSTANCE = "(?:db_instance|i)"
21
+
22
+ LIST = "(?:list|l)"
23
+
24
+ on(
25
+ /#{NIFTYCLOUD} #{ACCOUNT} #{LIST}/,
26
+ name: 'account_list',
27
+ description: 'list niftycloud accounts',
28
+ )
29
+
30
+ on(
31
+ /#{NIFTYCLOUD} #{ACCOUNT} use (?<target>.+)/,
32
+ name: 'account_use',
33
+ description: 'use niftycloud account',
34
+ )
35
+
36
+ on(
37
+ /#{NIFTYCLOUD} #{COMPUTING} #{INSTANCE} #{LIST}/,
38
+ name: 'computing_instance_list',
39
+ description: 'list computing instances',
40
+ )
41
+
42
+ on(
43
+ /#{NIFTYCLOUD} #{COMPUTING} #{INSTANCE} show (?<instance_id>.+)/,
44
+ name: 'computing_instance_show',
45
+ description: 'show computing instance',
46
+ )
47
+
48
+ on(
49
+ /#{NIFTYCLOUD} #{COMPUTING} #{SECURITY_GROUP} #{LIST}/,
50
+ name: 'computing_security_group_list',
51
+ description: 'list computing security groups',
52
+ )
53
+
54
+ on(
55
+ /#{NIFTYCLOUD} #{COMPUTING} #{SECURITY_GROUP} show (?<group_name>.+)/,
56
+ name: 'computing_security_group_show',
57
+ description: 'show computing security group',
58
+ )
59
+
60
+ on(
61
+ /#{NIFTYCLOUD} #{COMPUTING} #{VOLUME} #{LIST}/,
62
+ name: 'computing_volume_list',
63
+ description: 'list computing volumes',
64
+ )
65
+
66
+ on(
67
+ /#{NIFTYCLOUD} #{COMPUTING} #{VOLUME} show (?<volume_id>.+)/,
68
+ name: 'computing_volume_show',
69
+ description: 'show computing volume',
70
+ )
71
+
72
+ on(
73
+ /#{NIFTYCLOUD} #{COMPUTING} #{LOAD_BALANCER} #{LIST}/,
74
+ name: 'computing_load_balancer_list',
75
+ description: 'list computing load balancers',
76
+ )
77
+
78
+ on(
79
+ /#{NIFTYCLOUD} #{COMPUTING} #{LOAD_BALANCER} show (?<load_balancer_name>.+)/,
80
+ name: 'computing_load_balancer_show',
81
+ description: 'show computing load balancer',
82
+ )
83
+
84
+ on(
85
+ /#{NIFTYCLOUD} #{COMPUTING} #{ADDRESS} #{LIST}/,
86
+ name: 'computing_address_list',
87
+ description: 'list computing addresss',
88
+ )
89
+
90
+ on(
91
+ /#{NIFTYCLOUD} #{COMPUTING} #{AVAILABILITY_ZONE} #{LIST}/,
92
+ name: 'computing_availability_zone_list',
93
+ description: 'list computing availability zones',
94
+ )
95
+
96
+ on(
97
+ /#{NIFTYCLOUD} #{COMPUTING} #{IMAGE} #{LIST}/,
98
+ name: 'computing_image_list',
99
+ description: 'list computing images',
100
+ )
101
+
102
+ on(
103
+ /#{NIFTYCLOUD} #{COMPUTING} #{IMAGE} show (?<image_id>.+)/,
104
+ name: 'computing_image_show',
105
+ description: 'show computing image',
106
+ )
107
+
108
+ on(
109
+ /#{NIFTYCLOUD} #{COMPUTING} #{KEY_PAIR} #{LIST}/,
110
+ name: 'computing_key_pair_list',
111
+ description: 'list computing key pairs',
112
+ )
113
+
114
+ on(
115
+ /#{NIFTYCLOUD} #{COMPUTING} #{KEY_PAIR} show (?<key_pair_id>.+)/,
116
+ name: 'computing_key_pair_show',
117
+ description: 'show computing key pair',
118
+ )
119
+
120
+ on(
121
+ /#{NIFTYCLOUD} #{COMPUTING} #{SSL_CERTIFICATE} list/,
122
+ name: 'computing_ssl_certificate_list',
123
+ description: 'list computing ssl certificates',
124
+ )
125
+
126
+ on(
127
+ /#{NIFTYCLOUD} #{COMPUTING} #{SSL_CERTIFICATE} show (?<fqdn_id>.+)/,
128
+ name: 'computing_ssl_certificate_show',
129
+ description: 'show computing ssl certificate',
130
+ )
131
+
132
+ on(
133
+ /#{NIFTYCLOUD} #{RDB} #{DB_INSTANCE} #{LIST}/,
134
+ name: 'rdb_db_instance_list',
135
+ description: 'list rdb db instances',
136
+ )
137
+
138
+ on(
139
+ /#{NIFTYCLOUD} #{RDB} #{DB_INSTANCE} show (?<db_instance_id>.+)/,
140
+ name: 'rdb_db_instance_show',
141
+ description: 'show rdb db instance',
142
+ )
143
+
144
+ on(
145
+ /#{NIFTYCLOUD} #{COMPUTING} region #{LIST}/,
146
+ name: 'computing_region_list',
147
+ description: 'list computing regions',
148
+ )
149
+
150
+ on(
151
+ /#{NIFTYCLOUD} #{COMPUTING} region use (?<region>.+)/,
152
+ name: 'computing_region_use',
153
+ description: 'use computing region',
154
+ )
155
+
156
+ def account_list(message)
157
+ Ruboty::Niftycloud::Actions::AccountList.new(message).call
158
+ end
159
+
160
+ def account_use(message)
161
+ Ruboty::Niftycloud::Actions::AccountUse.new(message).call
162
+ end
163
+
164
+ def computing_instance_list(message)
165
+ Ruboty::Niftycloud::Actions::ComputingInstanceList.new(message).call
166
+ end
167
+
168
+ def computing_instance_show(message)
169
+ Ruboty::Niftycloud::Actions::ComputingInstanceShow.new(message).call
170
+ end
171
+
172
+ def computing_security_group_list(message)
173
+ Ruboty::Niftycloud::Actions::ComputingSecurityGroupList.new(message).call
174
+ end
175
+
176
+ def computing_security_group_show(message)
177
+ Ruboty::Niftycloud::Actions::ComputingSecurityGroupShow.new(message).call
178
+ end
179
+
180
+ def computing_volume_list(message)
181
+ Ruboty::Niftycloud::Actions::ComputingVolumeList.new(message).call
182
+ end
183
+
184
+ def computing_volume_show(message)
185
+ Ruboty::Niftycloud::Actions::ComputingVolumeShow.new(message).call
186
+ end
187
+
188
+ def computing_load_balancer_list(message)
189
+ Ruboty::Niftycloud::Actions::ComputingLoadBalancerList.new(message).call
190
+ end
191
+
192
+ def computing_load_balancer_show(message)
193
+ Ruboty::Niftycloud::Actions::ComputingLoadBalancerShow.new(message).call
194
+ end
195
+
196
+ def computing_address_list(message)
197
+ Ruboty::Niftycloud::Actions::ComputingAddressList.new(message).call
198
+ end
199
+
200
+ def computing_availability_zone_list(message)
201
+ Ruboty::Niftycloud::Actions::ComputingAvailabilityZoneList.new(message).call
202
+ end
203
+
204
+ def computing_image_list(message)
205
+ Ruboty::Niftycloud::Actions::ComputingImageList.new(message).call
206
+ end
207
+
208
+ def computing_image_show(message)
209
+ Ruboty::Niftycloud::Actions::ComputingImageShow.new(message).call
210
+ end
211
+
212
+ def computing_key_pair_list(message)
213
+ Ruboty::Niftycloud::Actions::ComputingKeyPairList.new(message).call
214
+ end
215
+
216
+ def computing_key_pair_show(message)
217
+ Ruboty::Niftycloud::Actions::ComputingKeyPairShow.new(message).call
218
+ end
219
+
220
+ def computing_ssl_certificate_list(message)
221
+ Ruboty::Niftycloud::Actions::ComputingSslCertificateList.new(message).call
222
+ end
223
+
224
+ def computing_ssl_certificate_show(message)
225
+ Ruboty::Niftycloud::Actions::ComputingSslCertificateShow.new(message).call
226
+ end
227
+
228
+ def rdb_db_instance_list(message)
229
+ Ruboty::Niftycloud::Actions::RdbDbInstanceList.new(message).call
230
+ end
231
+
232
+ def rdb_db_instance_show(message)
233
+ Ruboty::Niftycloud::Actions::RdbDbInstanceShow.new(message).call
234
+ end
235
+
236
+ def computing_region_list(message)
237
+ Ruboty::Niftycloud::Actions::ComputingRegionList.new(message).call
238
+ end
239
+
240
+ def computing_region_use(message)
241
+ Ruboty::Niftycloud::Actions::ComputingRegionUse.new(message).call
242
+ end
243
+ end
244
+ end
245
+ end
@@ -0,0 +1,27 @@
1
+ require "ruboty"
2
+ require "ruboty/niftycloud/actions/base"
3
+ require "ruboty/niftycloud/actions/account_list"
4
+ require "ruboty/niftycloud/actions/account_use"
5
+ require "ruboty/niftycloud/actions/computing_region_list"
6
+ require "ruboty/niftycloud/actions/computing_region_use"
7
+ require "ruboty/niftycloud/actions/computing_instance_list"
8
+ require "ruboty/niftycloud/actions/computing_instance_show"
9
+ require "ruboty/niftycloud/actions/computing_security_group_list"
10
+ require "ruboty/niftycloud/actions/computing_security_group_show"
11
+ require "ruboty/niftycloud/actions/computing_volume_list"
12
+ require "ruboty/niftycloud/actions/computing_volume_show"
13
+ require "ruboty/niftycloud/actions/computing_load_balancer_list"
14
+ require "ruboty/niftycloud/actions/computing_load_balancer_show"
15
+ require "ruboty/niftycloud/actions/computing_key_pair_list"
16
+ require "ruboty/niftycloud/actions/computing_image_list"
17
+ require "ruboty/niftycloud/actions/computing_image_show"
18
+ require "ruboty/niftycloud/actions/computing_availability_zone_list"
19
+ require "ruboty/niftycloud/actions/computing_ssl_certificate_list"
20
+ require "ruboty/niftycloud/actions/computing_ssl_certificate_show"
21
+ require "ruboty/niftycloud/actions/computing_address_list"
22
+ require "ruboty/niftycloud/actions/rdb_db_instance_list"
23
+ require "ruboty/niftycloud/actions/rdb_db_instance_show"
24
+ require "ruboty/niftycloud/version"
25
+ require "ruboty/handlers/niftycloud"
26
+
27
+ require "ace-client"
@@ -0,0 +1,13 @@
1
+ module Ruboty
2
+ module Niftycloud
3
+ module Actions
4
+ class AccountList < Base
5
+ def call
6
+ accounts.each_with_index do |account, i|
7
+ message.reply("#{i} [#{account[:name] == current_account[:name] ? "*" : " "}] #{account[:name]} - #{account[:description]}")
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,24 @@
1
+ module Ruboty
2
+ module Niftycloud
3
+ module Actions
4
+ class AccountUse < Base
5
+ def call
6
+ target = message[:target]
7
+
8
+ if target.match(/^\d+$/)
9
+ account = accounts[target.to_i]
10
+ else
11
+ account = accounts.find {|account| account[:name] == target }
12
+ end
13
+
14
+ if !account
15
+ return message.reply("Error: account not found")
16
+ end
17
+
18
+ current_account(account[:name])
19
+ message.reply("using: #{account[:name]}")
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,60 @@
1
+ require 'ace-client/niftycloud/computing'
2
+ require 'ace-client/niftycloud/rdb'
3
+
4
+ module Ruboty
5
+ module Niftycloud
6
+ module Actions
7
+ class Base
8
+ NAMESPACE = "niftycloud"
9
+
10
+ attr_reader :message
11
+
12
+ def initialize(message)
13
+ @message = message
14
+ end
15
+
16
+ def accounts
17
+ ENV["NIFTYCLOUD_ACCOUNTS"].split(",").map do |account|
18
+ {
19
+ name: account,
20
+ description: ENV["NIFTYCLOUD_ACCOUNT_#{account}_DESCRIPTION"],
21
+ access_key_id: ENV["NIFTYCLOUD_ACCOUNT_#{account}_ACCESS_KEY_ID"],
22
+ secret_access_key: ENV["NIFTYCLOUD_ACCOUNT_#{account}_SECRET_ACCESS_KEY"],
23
+ }
24
+ end
25
+ end
26
+
27
+ def current_account(account=nil)
28
+ message.robot.brain.data[NAMESPACE] ||= {}
29
+ if account
30
+ message.robot.brain.data[NAMESPACE]["current_account"] = account
31
+ else
32
+ name = message.robot.brain.data[NAMESPACE]["current_account"] || ENV["NIFTYCLOUD_DEFAULT_ACCOUNT"]
33
+ accounts.find {|account| account[:name] == name }
34
+ end
35
+ end
36
+
37
+ def current_region(region=nil)
38
+ message.robot.brain.data[NAMESPACE] ||= {}
39
+ if region
40
+ message.robot.brain.data[NAMESPACE]["current_region"] = region
41
+ else
42
+ message.robot.brain.data[NAMESPACE]["current_region"] || 'east-1'
43
+ end
44
+ end
45
+
46
+ def computing
47
+ AceClient::Niftycloud::Computing.build_client(
48
+ current_account.merge(endpoint: "#{current_region}.cp.cloud.nifty.com", path: '/api')
49
+ )
50
+ end
51
+
52
+ def rdb
53
+ AceClient::Niftycloud::Rdb.build_client(
54
+ current_account.merge(endpoint: "rdb.jp-#{current_region}.api.cloud.nifty.com")
55
+ )
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,14 @@
1
+ module Ruboty
2
+ module Niftycloud
3
+ module Actions
4
+ class ComputingAddressList < Base
5
+ def call
6
+ computing.addresses.each do |address|
7
+ # TODO: instance
8
+ message.reply("#{address['publicIp']} #{address['privateIpAddress']} #{address['description']} #{address['availabilityZone']}")
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Ruboty
2
+ module Niftycloud
3
+ module Actions
4
+ class ComputingAvailabilityZoneList < Base
5
+ def call
6
+ computing.availability_zones.each do |availability_zone|
7
+ # TODO: {"zoneName"=>"east-11", "zoneState"=>"available", "regionName"=>"east-1", "messageSet"=>nil, "securityGroupSupported"=>"false", "isDefault"=>"false"}
8
+ message.reply(availability_zone.values.join(' '))
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Ruboty
2
+ module Niftycloud
3
+ module Actions
4
+ class ComputingImageList < Base
5
+ def call
6
+ computing.images.each do |image|
7
+ # TODO: OS name
8
+ message.reply("#{image['name']} #{image['imageId']} #{image['architecture']} #{image['imageState']} #{image['imageOwnerAlias']}(#{image['imageOwnerId']}) #{image['description']} #{image['placement'] ? image['placement']['availabilityZone'] : ''}")
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Ruboty
2
+ module Niftycloud
3
+ module Actions
4
+ class ComputingImageShow < Base
5
+ def call
6
+ image = computing.images.find {|image| image['imageId'] == message[:image_id] }
7
+ image.each do |k, v|
8
+ message.reply "#{k}: #{v}"
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,13 @@
1
+ module Ruboty
2
+ module Niftycloud
3
+ module Actions
4
+ class ComputingInstanceList < Base
5
+ def call
6
+ computing.instances.each do |instance|
7
+ message.reply "#{instance['instanceId']} #{instance['instanceType']} #{instance['instanceState']['name']} #{instance['placement']['availabilityZone']} #{instance['ipAddress']} #{instance['description']} #{instance['launchTime']}"
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,15 @@
1
+ module Ruboty
2
+ module Niftycloud
3
+ module Actions
4
+ class ComputingInstanceShow < Base
5
+ def call
6
+ instance_id = message[:instance_id]
7
+ instance = computing.instances.find {|instance| instance['instanceId'] == instance_id }
8
+ instance.each do |k, v|
9
+ message.reply "#{k}: #{v}"
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,13 @@
1
+ module Ruboty
2
+ module Niftycloud
3
+ module Actions
4
+ class ComputingKeyPairList < Base
5
+ def call
6
+ computing.key_pairs.each do |key_pair|
7
+ message.reply("#{key_pair['keyName']} #{key_pair['keyFingerprint']}")
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ module Ruboty
2
+ module Niftycloud
3
+ module Actions
4
+ class ComputingLoadBalancerList < Base
5
+ def call
6
+ computing.load_balancers.each do |load_balancer|
7
+ message.reply "#{load_balancer['LoadBalancerName']} #{load_balancer['DNSName']} #{load_balancer['ListenerDescriptions']} #{load_balancer['Instances'] ? [load_balancer['Instances']['member']].flatten.size : ''} #{}"
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,14 @@
1
+ module Ruboty
2
+ module Niftycloud
3
+ module Actions
4
+ class ComputingLoadBalancerShow < Base
5
+ def call
6
+ load_balancer = computing.load_balancers.find {|load_balancer| load_balancer['LoadBalancerName'] == message[:load_balancer_name] }
7
+ load_balancer.each do |k, v|
8
+ message.reply "#{k}: #{v}"
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,13 @@
1
+ module Ruboty
2
+ module Niftycloud
3
+ module Actions
4
+ class ComputingRegionList < Base
5
+ def call
6
+ computing.regions.each do |region|
7
+ message.reply("#{region['regionName']} #{region['regionEndpoint']} #{region['isDefault']}")
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ module Ruboty
2
+ module Niftycloud
3
+ module Actions
4
+ class ComputingRegionUse < Base
5
+ def call
6
+ region = message[:region]
7
+ current_region(region)
8
+ message.reply("using region: #{region}")
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ module Ruboty
2
+ module Niftycloud
3
+ module Actions
4
+ class ComputingSecurityGroupList < Base
5
+ def call
6
+ computing.security_groups.each do |security_group|
7
+ message.reply("#{security_group['groupName']} #{security_group['ipPermissions'] ? security_group['ipPermissions']['item'].size : 0} #{security_group['groupStatus']} #{security_group['groupDescription']} #{security_group['availabilityZone']}")
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,14 @@
1
+ module Ruboty
2
+ module Niftycloud
3
+ module Actions
4
+ class ComputingSecurityGroupShow < Base
5
+ def call
6
+ security_group = computing.security_groups.find {|security_group| security_group['groupName'] == message[:group_name] }
7
+ security_group.each do |k, v|
8
+ message.reply "#{k}: #{v}"
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,13 @@
1
+ module Ruboty
2
+ module Niftycloud
3
+ module Actions
4
+ class ComputingSslCertificateList < Base
5
+ def call
6
+ computing.ssl_certificates.each do |ssl_certificate|
7
+ p ssl_certificate
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,14 @@
1
+ module Ruboty
2
+ module Niftycloud
3
+ module Actions
4
+ class ComputingSslCertificateShow < Base
5
+ def call
6
+ ssl_certificate = computing.ssl_certificates.find {|ssl_certificate| ssl_certificate['fqdnId'] == message[:fqdn_id] }
7
+ ssl_certificate.each do |k, v|
8
+ message.reply "#{k}: #{v}"
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,13 @@
1
+ module Ruboty
2
+ module Niftycloud
3
+ module Actions
4
+ class ComputingVolumeList < Base
5
+ def call
6
+ computing.volumes.each do |volume|
7
+ message.reply("#{volume['volumeId']} #{volume['diskType']} #{volume['size']} #{volume['status']} #{volume['attachmentSet'] ? [volume['attachmentSet']['item']].flatten.first['instanceId'] : ''} #{volume['availabilityZone']}")
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,14 @@
1
+ module Ruboty
2
+ module Niftycloud
3
+ module Actions
4
+ class ComputingVolumeShow < Base
5
+ def call
6
+ volume = computing.volumes.find {|volume| volume['volumeId'] == message[:volume_id] }
7
+ volume.each do |k, v|
8
+ puts "#{k}: #{v}"
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Ruboty
2
+ module Niftycloud
3
+ module Actions
4
+ class RdbDbInstanceList < Base
5
+ def call
6
+ rdb.db_instances.each do |db_instance|
7
+ # TODO: Type(master or replica)
8
+ message.reply("#{db_instance['DBInstanceIdentifier']} #{db_instance['DBInstanceClass']} #{db_instance['Engine']}#{db_instance['EngineVersion']} #{db_instance['DBInstanceStatus']} #{db_instance['AllocatedStorage']} #{db_instance['AvailabilityZone']} #{db_instance['Endpoint']['Address']} #{db_instance['Endpoint']['NiftyPrivateAddress']}")
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Ruboty
2
+ module Niftycloud
3
+ module Actions
4
+ class RdbDbInstanceShow < Base
5
+ def call
6
+ db_instance = rdb.db_instances.find {|db_instance| db_instance['DBInstanceIdentifier'] == message[:db_instance_id] }
7
+ db_instance.each do |k, v|
8
+ message.reply "#{k}: #{v}"
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,5 @@
1
+ module Ruboty
2
+ module Niftycloud
3
+ VERSION = "0.0.1"
4
+ end
5
+ end
@@ -0,0 +1,27 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'ruboty/niftycloud/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "ruboty-niftycloud"
8
+ spec.version = Ruboty::Niftycloud::VERSION
9
+ spec.authors = ["tily"]
10
+ spec.email = ["tily05@gmail.com"]
11
+ spec.summary = %q{Manage NIFTYCloud via Ruboty}
12
+ spec.description = %q{Manage NIFTYCloud via Ruboty}
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.6"
22
+ spec.add_development_dependency "rake"
23
+
24
+ spec.add_dependency "ruboty"
25
+ spec.add_dependency "ace-client"
26
+ spec.add_dependency "ace-client-ext"
27
+ end
metadata ADDED
@@ -0,0 +1,145 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ruboty-niftycloud
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - tily
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-03-22 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.6'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.6'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: ruboty
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: ace-client
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: ace-client-ext
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description: Manage NIFTYCloud via Ruboty
84
+ email:
85
+ - tily05@gmail.com
86
+ executables: []
87
+ extensions: []
88
+ extra_rdoc_files: []
89
+ files:
90
+ - .gitignore
91
+ - Gemfile
92
+ - LICENSE.txt
93
+ - README.md
94
+ - Rakefile
95
+ - lib/ruboty/handlers/niftycloud.rb
96
+ - lib/ruboty/niftycloud.rb
97
+ - lib/ruboty/niftycloud/actions/account_list.rb
98
+ - lib/ruboty/niftycloud/actions/account_use.rb
99
+ - lib/ruboty/niftycloud/actions/base.rb
100
+ - lib/ruboty/niftycloud/actions/computing_address_list.rb
101
+ - lib/ruboty/niftycloud/actions/computing_availability_zone_list.rb
102
+ - lib/ruboty/niftycloud/actions/computing_image_list.rb
103
+ - lib/ruboty/niftycloud/actions/computing_image_show.rb
104
+ - lib/ruboty/niftycloud/actions/computing_instance_list.rb
105
+ - lib/ruboty/niftycloud/actions/computing_instance_show.rb
106
+ - lib/ruboty/niftycloud/actions/computing_key_pair_list.rb
107
+ - lib/ruboty/niftycloud/actions/computing_load_balancer_list.rb
108
+ - lib/ruboty/niftycloud/actions/computing_load_balancer_show.rb
109
+ - lib/ruboty/niftycloud/actions/computing_region_list.rb
110
+ - lib/ruboty/niftycloud/actions/computing_region_use.rb
111
+ - lib/ruboty/niftycloud/actions/computing_security_group_list.rb
112
+ - lib/ruboty/niftycloud/actions/computing_security_group_show.rb
113
+ - lib/ruboty/niftycloud/actions/computing_ssl_certificate_list.rb
114
+ - lib/ruboty/niftycloud/actions/computing_ssl_certificate_show.rb
115
+ - lib/ruboty/niftycloud/actions/computing_volume_list.rb
116
+ - lib/ruboty/niftycloud/actions/computing_volume_show.rb
117
+ - lib/ruboty/niftycloud/actions/rdb_db_instance_list.rb
118
+ - lib/ruboty/niftycloud/actions/rdb_db_instance_show.rb
119
+ - lib/ruboty/niftycloud/version.rb
120
+ - ruboty-niftycloud.gemspec
121
+ homepage: ''
122
+ licenses:
123
+ - MIT
124
+ metadata: {}
125
+ post_install_message:
126
+ rdoc_options: []
127
+ require_paths:
128
+ - lib
129
+ required_ruby_version: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - '>='
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ required_rubygems_version: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - '>='
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ requirements: []
140
+ rubyforge_project:
141
+ rubygems_version: 2.3.0
142
+ signing_key:
143
+ specification_version: 4
144
+ summary: Manage NIFTYCloud via Ruboty
145
+ test_files: []