knife-cloudstack 0.0.20 → 0.1.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 +4 -4
- data/CHANGES.rdoc +9 -0
- data/lib/chef/knife/cs_base.rb +9 -0
- data/lib/chef/knife/cs_server_create.rb +0 -1
- data/lib/chef/knife/cs_volume_attach.rb +70 -0
- data/lib/chef/knife/cs_volume_detach.rb +61 -0
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1db722fa5971a7e39f6743be0651b7cdc3e087d4
|
4
|
+
data.tar.gz: 6bccfd84eb27700912af450f6029b1054ace7ed7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4c1fd8f65b7acd6d60803a54d943ed5102262276cb3a595d09eb4e7ec75a4e9736820e9a70ed13e63e457e930b31213577149a349e86cea7b41b5b11f677aba8
|
7
|
+
data.tar.gz: 6d789a5a526c02b3f56e554ad179cb927fe9a7a0a3df10e7f82549d5255d215b1a14f0634e472a42d7b88ca1493e9148767a023a9781920fb221a55c991ed827
|
data/CHANGES.rdoc
CHANGED
@@ -1,4 +1,13 @@
|
|
1
1
|
= Changes
|
2
|
+
== 2016-03-18 (0.1.0)
|
3
|
+
* Added subcommand: <tt>cs volume attach</tt> (David Bruce 3 Jul 2015)
|
4
|
+
* Added subcommand: <tt>cs volume detach</tt> (David Bruce 3 Jul 2015)
|
5
|
+
* Removed gem depedency (Fred Neubauer 18 Mar 2016)
|
6
|
+
|
7
|
+
== 2015-04-24 (0.0.20)
|
8
|
+
* Added support for expunge option for <tt>cs server destroy</tt> (Anton Opgenoort 24 Mar 2015)
|
9
|
+
* Added support for Chef 12 Client (Sander Botman 24 Apr 2015)
|
10
|
+
|
2
11
|
== 2015-03-19 (0.0.19)
|
3
12
|
* Added support for --boostrap-proxy for <tt>cs server create</tt> (Rutger Te Nijenhuis 19 Feb 2015)
|
4
13
|
* Bugfix: no implicit conversion of String into Integer error, if no Nic present (Frank Louwers 19 Mar 2015)
|
data/lib/chef/knife/cs_base.rb
CHANGED
@@ -92,6 +92,15 @@ class Chef
|
|
92
92
|
config[key] || Chef::Config[:knife][key] || nil
|
93
93
|
end
|
94
94
|
|
95
|
+
def exit_with_error(error)
|
96
|
+
ui.error error
|
97
|
+
exit 1
|
98
|
+
end
|
99
|
+
|
100
|
+
def valid_cs_name?(name)
|
101
|
+
!!(name && /^[a-zA-Z0-9][a-zA-Z0-9_\-#]*$/.match(name))
|
102
|
+
end
|
103
|
+
|
95
104
|
end
|
96
105
|
end
|
97
106
|
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
#
|
2
|
+
# Author:: David Bruce <dbruce@schubergphilis.com>
|
3
|
+
# Copyright:: Copyright (c) Schuberg Philis 2013
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
|
19
|
+
require 'chef/knife/cs_base'
|
20
|
+
|
21
|
+
module KnifeCloudstack
|
22
|
+
class CsVolumeAttach < Chef::Knife
|
23
|
+
include Chef::Knife::KnifeCloudstackBase
|
24
|
+
|
25
|
+
deps do
|
26
|
+
require 'knife-cloudstack/connection'
|
27
|
+
Chef::Knife.load_deps
|
28
|
+
end
|
29
|
+
|
30
|
+
banner 'knife cs volume attach NAME VM (options)'
|
31
|
+
|
32
|
+
option :volume,
|
33
|
+
:long => '--volume VOLUME_NAME',
|
34
|
+
:description => 'Specify volume name to attach'
|
35
|
+
|
36
|
+
option :vm,
|
37
|
+
:long => '--vm VM_NAME',
|
38
|
+
:description => 'Name of the VM to attach disk to'
|
39
|
+
|
40
|
+
def run
|
41
|
+
validate_base_options
|
42
|
+
|
43
|
+
volumename = locate_config_value(:volume) || @name_args[0]
|
44
|
+
exit_with_error 'Invalid volume name.' unless valid_cs_name? volumename
|
45
|
+
|
46
|
+
vmname = locate_config_value(:vm) || @name_args[1]
|
47
|
+
exit_with_error 'Invalid virtual machine.' unless valid_cs_name? vmname
|
48
|
+
|
49
|
+
volume = connection.get_volume(volumename)
|
50
|
+
exit_with_error "Volume #{volumename} not found." unless volume && volume['id']
|
51
|
+
exit_with_error "Volume #{volumename} is currently attached." if volume['vmname']
|
52
|
+
|
53
|
+
vm = connection.get_server(vmname)
|
54
|
+
exit_with_error "Virtual machine #{vmname} not found." unless vm && vm['id']
|
55
|
+
|
56
|
+
puts ui.color("Attaching volume #{volumename} to #{vmname}", :magenta)
|
57
|
+
|
58
|
+
params = {
|
59
|
+
'command' => 'attachVolume',
|
60
|
+
'id' => volume['id'],
|
61
|
+
'virtualmachineid' => vm['id']
|
62
|
+
}
|
63
|
+
|
64
|
+
json = connection.send_async_request(params)
|
65
|
+
exit_with_error 'Unable to attach volume' unless json
|
66
|
+
|
67
|
+
puts "Volume #{volumename} is now attached to #{json['volume']['vmname']}"
|
68
|
+
end
|
69
|
+
end # class
|
70
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
#
|
2
|
+
# Author:: David Bruce <dbruce@schubergphilis.com>
|
3
|
+
# Copyright:: Copyright (c) Schuberg Philis 2013
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
|
19
|
+
require 'chef/knife/cs_base'
|
20
|
+
|
21
|
+
module KnifeCloudstack
|
22
|
+
class CsVolumeDetach < Chef::Knife
|
23
|
+
|
24
|
+
include Chef::Knife::KnifeCloudstackBase
|
25
|
+
|
26
|
+
deps do
|
27
|
+
require 'knife-cloudstack/connection'
|
28
|
+
Chef::Knife.load_deps
|
29
|
+
end
|
30
|
+
|
31
|
+
banner 'knife cs volume detach NAME (options)'
|
32
|
+
|
33
|
+
option :name,
|
34
|
+
:long => '--name',
|
35
|
+
:description => 'Specify volume name to detach'
|
36
|
+
|
37
|
+
def run
|
38
|
+
validate_base_options
|
39
|
+
|
40
|
+
volumename = locate_config_value(:volume) || @name_args[0]
|
41
|
+
exit_with_error 'Invalid volumename.' unless valid_cs_name? volumename
|
42
|
+
|
43
|
+
volume = connection.get_volume(volumename)
|
44
|
+
exit_with_error "Volume #{volumename} not found." unless volume && volume['id']
|
45
|
+
exit_with_error "Volume #{volumename} is not attached." unless volume['vmname']
|
46
|
+
|
47
|
+
puts ui.color("Detaching volume: #{volumename}", :magenta)
|
48
|
+
|
49
|
+
params = {
|
50
|
+
'command' => 'detachVolume',
|
51
|
+
'id' => volume['id']
|
52
|
+
}
|
53
|
+
|
54
|
+
json = connection.send_async_request(params)
|
55
|
+
exit_with_error 'Unable to detach volume' unless json
|
56
|
+
|
57
|
+
puts "Volume #{volumename} is now detached."
|
58
|
+
|
59
|
+
end
|
60
|
+
end # class
|
61
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: knife-cloudstack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Holmes
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date:
|
15
|
+
date: 2016-03-18 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: chef
|
@@ -100,12 +100,14 @@ files:
|
|
100
100
|
- lib/chef/knife/cs_template_list.rb
|
101
101
|
- lib/chef/knife/cs_template_register.rb
|
102
102
|
- lib/chef/knife/cs_user_list.rb
|
103
|
+
- lib/chef/knife/cs_volume_attach.rb
|
103
104
|
- lib/chef/knife/cs_volume_create.rb
|
104
105
|
- lib/chef/knife/cs_volume_delete.rb
|
106
|
+
- lib/chef/knife/cs_volume_detach.rb
|
105
107
|
- lib/chef/knife/cs_volume_list.rb
|
106
108
|
- lib/chef/knife/cs_zone_list.rb
|
107
109
|
- lib/knife-cloudstack/connection.rb
|
108
|
-
homepage:
|
110
|
+
homepage: https://github.com/CloudStack-extras/knife-cloudstack
|
109
111
|
licenses: []
|
110
112
|
metadata: {}
|
111
113
|
post_install_message:
|