knife-cosmic 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGES.rdoc +186 -0
- data/LICENSE +202 -0
- data/README.rdoc +427 -0
- data/lib/chef/knife/cosmic_aag_list.rb +58 -0
- data/lib/chef/knife/cosmic_account_list.rb +87 -0
- data/lib/chef/knife/cosmic_base.rb +108 -0
- data/lib/chef/knife/cosmic_baselist.rb +111 -0
- data/lib/chef/knife/cosmic_cluster_list.rb +60 -0
- data/lib/chef/knife/cosmic_config_list.rb +56 -0
- data/lib/chef/knife/cosmic_disk_list.rb +58 -0
- data/lib/chef/knife/cosmic_domain_list.rb +53 -0
- data/lib/chef/knife/cosmic_firewallrule_create.rb +138 -0
- data/lib/chef/knife/cosmic_firewallrule_list.rb +62 -0
- data/lib/chef/knife/cosmic_forwardrule_create.rb +145 -0
- data/lib/chef/knife/cosmic_host_list.rb +61 -0
- data/lib/chef/knife/cosmic_hosts.rb +58 -0
- data/lib/chef/knife/cosmic_iso_list.rb +89 -0
- data/lib/chef/knife/cosmic_keypair_create.rb +72 -0
- data/lib/chef/knife/cosmic_keypair_delete.rb +60 -0
- data/lib/chef/knife/cosmic_keypair_list.rb +44 -0
- data/lib/chef/knife/cosmic_network_list.rb +63 -0
- data/lib/chef/knife/cosmic_oscategory_list.rb +50 -0
- data/lib/chef/knife/cosmic_ostype_list.rb +52 -0
- data/lib/chef/knife/cosmic_pod_list.rb +60 -0
- data/lib/chef/knife/cosmic_project_list.rb +63 -0
- data/lib/chef/knife/cosmic_publicip_list.rb +55 -0
- data/lib/chef/knife/cosmic_router_list.rb +64 -0
- data/lib/chef/knife/cosmic_securitygroup_list.rb +59 -0
- data/lib/chef/knife/cosmic_server_add_nic.rb +109 -0
- data/lib/chef/knife/cosmic_server_create.rb +674 -0
- data/lib/chef/knife/cosmic_server_delete.rb +153 -0
- data/lib/chef/knife/cosmic_server_list.rb +167 -0
- data/lib/chef/knife/cosmic_server_passwordreset.rb +91 -0
- data/lib/chef/knife/cosmic_server_reboot.rb +99 -0
- data/lib/chef/knife/cosmic_server_remove_nic.rb +101 -0
- data/lib/chef/knife/cosmic_server_start.rb +104 -0
- data/lib/chef/knife/cosmic_server_stop.rb +118 -0
- data/lib/chef/knife/cosmic_server_update.rb +47 -0
- data/lib/chef/knife/cosmic_service_list.rb +74 -0
- data/lib/chef/knife/cosmic_stack_create.rb +298 -0
- data/lib/chef/knife/cosmic_stack_delete.rb +79 -0
- data/lib/chef/knife/cosmic_template_create.rb +129 -0
- data/lib/chef/knife/cosmic_template_extract.rb +104 -0
- data/lib/chef/knife/cosmic_template_list.rb +88 -0
- data/lib/chef/knife/cosmic_template_register.rb +187 -0
- data/lib/chef/knife/cosmic_user_list.rb +62 -0
- data/lib/chef/knife/cosmic_volume_attach.rb +70 -0
- data/lib/chef/knife/cosmic_volume_create.rb +108 -0
- data/lib/chef/knife/cosmic_volume_delete.rb +97 -0
- data/lib/chef/knife/cosmic_volume_detach.rb +61 -0
- data/lib/chef/knife/cosmic_volume_list.rb +77 -0
- data/lib/chef/knife/cosmic_zone_list.rb +53 -0
- data/lib/knife-cosmic/connection.rb +1046 -0
- metadata +127 -0
@@ -0,0 +1,50 @@
|
|
1
|
+
#
|
2
|
+
# Original knife-cloudstack author:: Sander Botman (<sbotman@schubergphilis.com>)
|
3
|
+
# Copyright:: Copyright (c) 2013 Sander Botman.
|
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'
|
20
|
+
require 'chef/knife/cosmic_baselist'
|
21
|
+
|
22
|
+
module Knifecosmic
|
23
|
+
class CosmicOscategoryList < Chef::Knife
|
24
|
+
|
25
|
+
include Chef::Knife::KnifecosmicBaseList
|
26
|
+
|
27
|
+
banner "knife cosmic oscategory list (options)"
|
28
|
+
|
29
|
+
option :keyword,
|
30
|
+
:long => "--keyword KEY",
|
31
|
+
:description => "List by keyword"
|
32
|
+
|
33
|
+
def run
|
34
|
+
validate_base_options
|
35
|
+
|
36
|
+
columns = [
|
37
|
+
'Name :name',
|
38
|
+
'ID :id'
|
39
|
+
]
|
40
|
+
|
41
|
+
params = { 'command' => "listOsCategories" }
|
42
|
+
params['filter'] = locate_config_value(:filter) if locate_config_value(:filter)
|
43
|
+
params['keyword'] = locate_config_value(:keyword) if locate_config_value(:keyword)
|
44
|
+
|
45
|
+
result = connection.list_object(params, "oscategory")
|
46
|
+
list_object(columns, result)
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
#
|
2
|
+
# Original knife-cloudstack author:: Sander Botman (<sbotman@schubergphilis.com>)
|
3
|
+
# Copyright:: Copyright (c) 2013 Sander Botman.
|
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'
|
20
|
+
require 'chef/knife/cosmic_baselist'
|
21
|
+
|
22
|
+
module Knifecosmic
|
23
|
+
class CosmicOstypeList < Chef::Knife
|
24
|
+
|
25
|
+
include Chef::Knife::KnifecosmicBaseList
|
26
|
+
|
27
|
+
banner "knife cosmic ostype list (options)"
|
28
|
+
|
29
|
+
option :keyword,
|
30
|
+
:long => "--keyword KEY",
|
31
|
+
:description => "List by keyword"
|
32
|
+
|
33
|
+
def run
|
34
|
+
validate_base_options
|
35
|
+
|
36
|
+
columns = [
|
37
|
+
'Description :description',
|
38
|
+
'ID :id',
|
39
|
+
'OS Categorie ID :oscategoryid'
|
40
|
+
]
|
41
|
+
|
42
|
+
params = { 'command' => "listOsTypes" }
|
43
|
+
params['filter'] = locate_config_value(:filter) if locate_config_value(:filter)
|
44
|
+
params['listall'] = locate_config_value(:listall) if locate_config_value(:listall)
|
45
|
+
params['keyword'] = locate_config_value(:keyword) if locate_config_value(:keyword)
|
46
|
+
|
47
|
+
result = connection.list_object(params, "ostype")
|
48
|
+
list_object(columns, result)
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
#
|
2
|
+
# Original knife-cloudstack author:: Sander Botman (<sbotman@schubergphilis.com>)
|
3
|
+
# Copyright:: Copyright (c) 2013 Sander Botman.
|
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'
|
20
|
+
require 'chef/knife/cosmic_baselist'
|
21
|
+
|
22
|
+
module Knifecosmic
|
23
|
+
class CosmicPodList < Chef::Knife
|
24
|
+
|
25
|
+
include Chef::Knife::KnifecosmicBaseList
|
26
|
+
|
27
|
+
banner "knife cosmic pod list (options)"
|
28
|
+
|
29
|
+
option :name,
|
30
|
+
:long => "--name NAME",
|
31
|
+
:description => "Specify router pod to list"
|
32
|
+
|
33
|
+
option :keyword,
|
34
|
+
:long => "--keyword KEY",
|
35
|
+
:description => "List by keyword"
|
36
|
+
|
37
|
+
def run
|
38
|
+
validate_base_options
|
39
|
+
|
40
|
+
columns = [
|
41
|
+
'Name :name',
|
42
|
+
'Zone :zonename',
|
43
|
+
'Gateway :gateway',
|
44
|
+
'Netmask :netmask',
|
45
|
+
'Start IP :startip',
|
46
|
+
'End IP :endip',
|
47
|
+
'AllocationState :allocationstate'
|
48
|
+
]
|
49
|
+
|
50
|
+
params = { 'command' => "listPods" }
|
51
|
+
params['filter'] = locate_config_value(:filter) if locate_config_value(:filter)
|
52
|
+
params['keyword'] = locate_config_value(:keyword) if locate_config_value(:keyword)
|
53
|
+
params['name'] = locate_config_value(:name) if locate_config_value(:name)
|
54
|
+
|
55
|
+
result = connection.list_object(params, "pod")
|
56
|
+
list_object(columns, result)
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
#
|
2
|
+
# Original knife-cloudstack author:: Sander Botman (<sbotman@schubergphilis.com>)
|
3
|
+
# Copyright:: Copyright (c) 2013 Sander Botman.
|
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'
|
20
|
+
require 'chef/knife/cosmic_baselist'
|
21
|
+
|
22
|
+
module Knifecosmic
|
23
|
+
class CosmicProjectList < Chef::Knife
|
24
|
+
|
25
|
+
include Chef::Knife::KnifecosmicBaseList
|
26
|
+
|
27
|
+
banner "knife cosmic project list (options)"
|
28
|
+
|
29
|
+
option :listall,
|
30
|
+
:long => "--listall",
|
31
|
+
:description => "List all projects",
|
32
|
+
:boolean => true
|
33
|
+
|
34
|
+
option :name,
|
35
|
+
:long => "--name NAME",
|
36
|
+
:description => "Specify project name to list"
|
37
|
+
|
38
|
+
option :keyword,
|
39
|
+
:long => "--keyword KEY",
|
40
|
+
:description => "List by keyword"
|
41
|
+
|
42
|
+
def run
|
43
|
+
validate_base_options
|
44
|
+
|
45
|
+
columns = [
|
46
|
+
'Name :name',
|
47
|
+
'Account :account',
|
48
|
+
'Domain :domain',
|
49
|
+
'State :state'
|
50
|
+
]
|
51
|
+
|
52
|
+
params = { 'command' => "listProjects" }
|
53
|
+
params['filter'] = locate_config_value(:filter) if locate_config_value(:filter)
|
54
|
+
params['listall'] = locate_config_value(:listall) if locate_config_value(:listall)
|
55
|
+
params['keyword'] = locate_config_value(:keyword) if locate_config_value(:keyword)
|
56
|
+
params['name'] = locate_config_value(:name) if locate_config_value(:name)
|
57
|
+
|
58
|
+
result = connection.list_object(params, "project")
|
59
|
+
list_object(columns, result)
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
#
|
2
|
+
# Original knife-cloudstack author:: Sander Botman (<sbotman@schubergphilis.com>)
|
3
|
+
# Copyright:: Copyright (c) 2013 Sander Botman.
|
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'
|
20
|
+
require 'chef/knife/cosmic_baselist'
|
21
|
+
|
22
|
+
module Knifecosmic
|
23
|
+
class CosmicPublicipList < Chef::Knife
|
24
|
+
|
25
|
+
include Chef::Knife::KnifecosmicBaseList
|
26
|
+
|
27
|
+
banner "knife cosmic publicip list (options)"
|
28
|
+
|
29
|
+
option :listall,
|
30
|
+
:long => "--listall",
|
31
|
+
:description => "List all public ip addresses",
|
32
|
+
:boolean => true
|
33
|
+
|
34
|
+
def run
|
35
|
+
validate_base_options
|
36
|
+
|
37
|
+
columns = [
|
38
|
+
'IP :ipaddress',
|
39
|
+
'Account :account',
|
40
|
+
'Domain :domain',
|
41
|
+
'Zone :zonename',
|
42
|
+
'State :state',
|
43
|
+
'Allocated :allocated'
|
44
|
+
]
|
45
|
+
|
46
|
+
params = { 'command' => "listPublicIpAddresses" }
|
47
|
+
params['filter'] = locate_config_value(:filter) if locate_config_value(:filter)
|
48
|
+
params['listall'] = locate_config_value(:listall) if locate_config_value(:listall)
|
49
|
+
|
50
|
+
result = connection.list_object(params, "publicipaddress")
|
51
|
+
list_object(columns, result)
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
#
|
2
|
+
# Original knife-cloudstack author:: Sander Botman (<sbotman@schubergphilis.com>)
|
3
|
+
# Copyright:: Copyright (c) 2013 Sander Botman.
|
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'
|
20
|
+
require 'chef/knife/cosmic_baselist'
|
21
|
+
|
22
|
+
module Knifecosmic
|
23
|
+
class CosmicRouterList < Chef::Knife
|
24
|
+
|
25
|
+
include Chef::Knife::KnifecosmicBaseList
|
26
|
+
|
27
|
+
banner "knife cosmic router list (options)"
|
28
|
+
|
29
|
+
option :listall,
|
30
|
+
:long => "--listall",
|
31
|
+
:description => "List all routers",
|
32
|
+
:boolean => true
|
33
|
+
|
34
|
+
option :name,
|
35
|
+
:long => "--name NAME",
|
36
|
+
:description => "Specify router name to list"
|
37
|
+
|
38
|
+
option :keyword,
|
39
|
+
:long => "--keyword KEY",
|
40
|
+
:description => "List by keyword"
|
41
|
+
|
42
|
+
def run
|
43
|
+
validate_base_options
|
44
|
+
|
45
|
+
columns = [
|
46
|
+
'Name :name',
|
47
|
+
'Account :account',
|
48
|
+
'Domain :domain',
|
49
|
+
'State :state',
|
50
|
+
'Address :publicip'
|
51
|
+
]
|
52
|
+
|
53
|
+
params = { 'command' => "listRouters" }
|
54
|
+
params['filter'] = locate_config_value(:filter) if locate_config_value(:filter)
|
55
|
+
params['listall'] = locate_config_value(:listall) if locate_config_value(:listall)
|
56
|
+
params['keyword'] = locate_config_value(:keyword) if locate_config_value(:keyword)
|
57
|
+
params['name'] = locate_config_value(:name) if locate_config_value(:name)
|
58
|
+
|
59
|
+
result = connection.list_object(params, "router")
|
60
|
+
list_object(columns, result)
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
#
|
2
|
+
# Original knife-cloudstack author:: Ryan Holmes (<rholmes@edmunds.com>)
|
3
|
+
# Original knife-cloudstack author:: Sander Botman (<sbotman@schubergphilis.com>)
|
4
|
+
# Original knife-cloudstack author:: Sebastien Goasguen (<runseb@gmail.com>)
|
5
|
+
# Copyright:: Copyright (c) 2011 Edmunds, Inc.
|
6
|
+
# Copyright:: Copyright (c) 2013 Sander Botman.
|
7
|
+
# License:: Apache License, Version 2.0
|
8
|
+
#
|
9
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
10
|
+
# you may not use this file except in compliance with the License.
|
11
|
+
# You may obtain a copy of the License at
|
12
|
+
#
|
13
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
14
|
+
#
|
15
|
+
# Unless required by applicable law or agreed to in writing, software
|
16
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
17
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
18
|
+
# See the License for the specific language governing permissions and
|
19
|
+
# limitations under the License.
|
20
|
+
#
|
21
|
+
|
22
|
+
require 'chef/knife'
|
23
|
+
require 'chef/knife/cosmic_baselist'
|
24
|
+
|
25
|
+
module Knifecosmic
|
26
|
+
class CosmicSecuritygroupList < Chef::Knife
|
27
|
+
|
28
|
+
include Chef::Knife::KnifecosmicBaseList
|
29
|
+
|
30
|
+
banner "knife cosmic securitygroup list (options)"
|
31
|
+
|
32
|
+
option :name,
|
33
|
+
:long => "--name NAME",
|
34
|
+
:description => "Specify security group to list"
|
35
|
+
|
36
|
+
option :keyword,
|
37
|
+
:long => "--keyword NAME",
|
38
|
+
:description => "Specify part of servicename to list"
|
39
|
+
|
40
|
+
def run
|
41
|
+
validate_base_options
|
42
|
+
|
43
|
+
columns = [
|
44
|
+
'Name :name',
|
45
|
+
'Description :description',
|
46
|
+
'Account :account'
|
47
|
+
]
|
48
|
+
|
49
|
+
params = { 'command' => "listSecurityGroups" }
|
50
|
+
params['filter'] = locate_config_value(:filter) if locate_config_value(:filter)
|
51
|
+
params['keyword'] = locate_config_value(:keyword) if locate_config_value(:keyword)
|
52
|
+
params['name'] = locate_config_value(:name) if locate_config_value(:name)
|
53
|
+
|
54
|
+
result = connection.list_object(params, "securitygroup")
|
55
|
+
list_object(columns, result)
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,109 @@
|
|
1
|
+
#
|
2
|
+
# Original knife-cloudstack author:: John E. Vincent (<lusis.org+github.com@gmail.com>)
|
3
|
+
# Copyright:: Copyright (c) 2013 John E. Vincent
|
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/cosmic_base'
|
20
|
+
require 'chef/knife/cosmic_baselist'
|
21
|
+
|
22
|
+
module Knifecosmic
|
23
|
+
class CosmicServerAddNic < Chef::Knife
|
24
|
+
|
25
|
+
include Chef::Knife::KnifecosmicBase
|
26
|
+
include Chef::Knife::KnifecosmicBaseList
|
27
|
+
|
28
|
+
deps do
|
29
|
+
require 'knife-cosmic/connection'
|
30
|
+
require 'chef/knife'
|
31
|
+
Chef::Knife.load_deps
|
32
|
+
end
|
33
|
+
|
34
|
+
banner "knife cosmic server add nic SERVERID NETWORKID (--ipaddress X.X.X.X)"
|
35
|
+
|
36
|
+
option :ipaddress,
|
37
|
+
:long => "--ipaddress IPADDRESS",
|
38
|
+
:description => "Attach with the specified IP",
|
39
|
+
:default => nil
|
40
|
+
|
41
|
+
|
42
|
+
def run
|
43
|
+
validate_base_options
|
44
|
+
|
45
|
+
@server_id, @network_id = name_args
|
46
|
+
|
47
|
+
if @network_id.nil? || @server_id.nil?
|
48
|
+
show_usage
|
49
|
+
ui.fatal("You must provide both a network id and a server id")
|
50
|
+
exit(1)
|
51
|
+
end
|
52
|
+
|
53
|
+
@ipaddr = locate_config_value(:ipaddress)
|
54
|
+
|
55
|
+
object_list = []
|
56
|
+
if locate_config_value(:fields)
|
57
|
+
locate_config_value(:fields).split(',').each { |n| object_list << ui.color(("#{n}").strip, :bold) }
|
58
|
+
else
|
59
|
+
object_list << ui.color('Server', :bold)
|
60
|
+
object_list << ui.color('Network', :bold)
|
61
|
+
object_list << ui.color('Type', :bold)
|
62
|
+
object_list << ui.color('Default', :bold)
|
63
|
+
object_list << ui.color('Address', :bold)
|
64
|
+
object_list << ui.color('Gateway', :bold)
|
65
|
+
object_list << ui.color('Netmask', :bold)
|
66
|
+
object_list << ui.color('ID', :bold)
|
67
|
+
end
|
68
|
+
|
69
|
+
columns = object_list.count
|
70
|
+
|
71
|
+
connection_result = connection.add_nic_to_vm(
|
72
|
+
@network_id,
|
73
|
+
@server_id,
|
74
|
+
@ipaddr
|
75
|
+
)
|
76
|
+
|
77
|
+
output_format(connection_result)
|
78
|
+
|
79
|
+
object_list << connection_result['name']
|
80
|
+
object_list << ''
|
81
|
+
object_list << ''
|
82
|
+
object_list << ''
|
83
|
+
object_list << ''
|
84
|
+
object_list << ''
|
85
|
+
object_list << ''
|
86
|
+
object_list << ''
|
87
|
+
if connection_result['nic']
|
88
|
+
connection_result['nic'].each do |r|
|
89
|
+
if locate_config_value(:fields)
|
90
|
+
locate_config_value(:fields).downcase.split(',').each { |n| object_list << ((r[("#{n}").strip]).to_s || 'N/A') }
|
91
|
+
else
|
92
|
+
object_list << ''
|
93
|
+
object_list << r['networkname'].to_s
|
94
|
+
object_list << r['type'].to_s
|
95
|
+
object_list << (r['isdefault'] ? r['isdefault'].to_s : 'false')
|
96
|
+
object_list << (r['ipaddress'] || '')
|
97
|
+
object_list << (r['gateway'] || '')
|
98
|
+
object_list << (r['netmask'] || '')
|
99
|
+
object_list << (r['networkid'] || '')
|
100
|
+
end
|
101
|
+
end
|
102
|
+
puts ui.list(object_list, :uneven_columns_across, columns)
|
103
|
+
list_object_fields(connection_result) if locate_config_value(:fieldlist)
|
104
|
+
else
|
105
|
+
ui.error("No nicosmic returned in response")
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|