knife-openstack 2.1.1 → 2.1.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/chef/knife/cloud/openstack_server_create_options.rb +50 -50
- data/lib/chef/knife/cloud/openstack_service.rb +2 -1
- data/lib/chef/knife/cloud/openstack_service_options.rb +23 -23
- data/lib/chef/knife/openstack_flavor_list.rb +2 -2
- data/lib/chef/knife/openstack_floating_ip_allocate.rb +6 -6
- data/lib/chef/knife/openstack_floating_ip_associate.rb +7 -7
- data/lib/chef/knife/openstack_floating_ip_disassociate.rb +7 -7
- data/lib/chef/knife/openstack_floating_ip_list.rb +2 -2
- data/lib/chef/knife/openstack_floating_ip_release.rb +2 -2
- data/lib/chef/knife/openstack_group_list.rb +3 -3
- data/lib/chef/knife/openstack_helpers.rb +2 -2
- data/lib/chef/knife/openstack_image_list.rb +6 -6
- data/lib/chef/knife/openstack_network_list.rb +2 -2
- data/lib/chef/knife/openstack_server_create.rb +5 -4
- data/lib/chef/knife/openstack_server_delete.rb +3 -3
- data/lib/chef/knife/openstack_server_list.rb +2 -2
- data/lib/chef/knife/openstack_server_show.rb +3 -3
- data/lib/chef/knife/openstack_volume_list.rb +4 -4
- data/lib/knife-openstack/version.rb +1 -1
- metadata +11 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a2a2d48a5b5ac264c9693312144b757c2503b2a1b3b5c753e95ac26bac56dacd
|
4
|
+
data.tar.gz: ef663091c0af5196958e52476a08cc2fb90a795f6f78d4ab188a257139c0c22a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 38175ab08d67e201464005acf13f2bbaecf89596b9b153075d489798a1bb7d1d50e5d78bef3430a7ff9a81707e377e47807de236c8e0c6c2b15ac6c154b97513
|
7
|
+
data.tar.gz: 6ac31de76145bfcd50d0ad0d3d5372d702fdc64872b50734196d3fb5757875d0421e8c8b56ced7f2a2a83af3fd1fee6597e97ba1b10a3fcdf275c67abf2de91e
|
@@ -27,82 +27,82 @@ class Chef
|
|
27
27
|
|
28
28
|
# Openstack Server create params.
|
29
29
|
option :private_network,
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
30
|
+
long: "--openstack-private-network",
|
31
|
+
description: "Use the private IP for bootstrapping rather than the public IP",
|
32
|
+
boolean: true,
|
33
|
+
default: false
|
34
34
|
|
35
35
|
option :openstack_floating_ip,
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
36
|
+
short: "-a [IP]",
|
37
|
+
long: "--openstack-floating-ip [IP]",
|
38
|
+
default: "-1",
|
39
|
+
description: "Request to associate a floating IP address to the new OpenStack node. Assumes IPs have been allocated to the project. Specific IP is optional."
|
40
40
|
|
41
41
|
option :openstack_volumes,
|
42
|
-
|
43
|
-
|
44
|
-
|
42
|
+
long: "--openstack-volumes VOLUME1,VOLUME2,VOLUME3",
|
43
|
+
description: "Comma separated list of the UUID(s) of the volume(s) to attach to the server",
|
44
|
+
proc: proc { |volumes| volumes.split(",") }
|
45
45
|
|
46
46
|
option :openstack_scheduler_hints,
|
47
|
-
|
48
|
-
|
49
|
-
|
47
|
+
long: "--scheduler-hints HINTS",
|
48
|
+
description: "A scheduler group hint to OpenStack",
|
49
|
+
proc: proc { |i| Chef::Config[:knife][:openstack_scheduler_hints] = i }
|
50
50
|
|
51
51
|
option :openstack_security_groups,
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
52
|
+
short: "-G X,Y,Z",
|
53
|
+
long: "--openstack-groups X,Y,Z",
|
54
|
+
description: "The security groups for this server",
|
55
|
+
default: ["default"],
|
56
|
+
proc: proc { |groups| groups.split(",") }
|
57
57
|
|
58
58
|
option :openstack_ssh_key_id,
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
59
|
+
short: "-S KEY",
|
60
|
+
long: "--openstack-ssh-key-id KEY",
|
61
|
+
description: "The OpenStack SSH keypair id",
|
62
|
+
proc: proc { |key| Chef::Config[:knife][:openstack_ssh_key_id] = key }
|
63
63
|
|
64
64
|
option :user_data,
|
65
|
-
|
66
|
-
|
67
|
-
|
65
|
+
long: "--user-data USER_DATA",
|
66
|
+
description: "The file path containing user data information for this server",
|
67
|
+
proc: proc { |user_data| open(user_data, &:read) }
|
68
68
|
|
69
69
|
option :bootstrap_network,
|
70
|
-
|
71
|
-
|
72
|
-
|
70
|
+
long: "--bootstrap-network NAME",
|
71
|
+
default: "public",
|
72
|
+
description: "Specify network for bootstrapping. Default is 'public'."
|
73
73
|
|
74
74
|
option :network,
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
75
|
+
long: "--no-network",
|
76
|
+
boolean: true,
|
77
|
+
default: true,
|
78
|
+
description: "Use first available network for bootstrapping if 'public' and 'private' are unavailable."
|
79
79
|
|
80
80
|
option :network_ids,
|
81
|
-
|
82
|
-
|
83
|
-
|
81
|
+
long: "--network-ids NETWORK_ID_1,NETWORK_ID_2,NETWORK_ID_3",
|
82
|
+
description: "Comma separated list of the UUID(s) of the network(s) for the server to attach",
|
83
|
+
proc: proc { |networks| networks.split(",") }
|
84
84
|
|
85
85
|
option :availability_zone,
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
86
|
+
short: "-Z ZONE_NAME",
|
87
|
+
long: "--availability-zone ZONE_NAME",
|
88
|
+
description: "The availability zone for this server",
|
89
|
+
proc: proc { |z| Chef::Config[:knife][:availability_zone] = z }
|
90
90
|
|
91
91
|
option :metadata,
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
92
|
+
short: "-M X=1",
|
93
|
+
long: "--metadata X=1",
|
94
|
+
description: "Metadata information for this server (may pass multiple times)",
|
95
|
+
proc: proc { |data| Chef::Config[:knife][:metadata] ||= {}; Chef::Config[:knife][:metadata].merge!(data.split("=")[0] => data.split("=")[1]) }
|
96
96
|
|
97
97
|
option :secret_file,
|
98
|
-
|
99
|
-
|
100
|
-
|
98
|
+
long: "--secret-file SECRET_FILE",
|
99
|
+
description: "A file containing the secret key to use to encrypt data bag item values",
|
100
|
+
proc: proc { |sf| Chef::Config[:knife][:secret_file] = sf }
|
101
101
|
|
102
102
|
option :secret,
|
103
|
-
|
104
|
-
|
105
|
-
|
103
|
+
long: "--secret ",
|
104
|
+
description: "The secret key to use to encrypt data bag item values",
|
105
|
+
proc: proc { |s| Chef::Config[:knife][:secret] = s }
|
106
106
|
end
|
107
107
|
end
|
108
108
|
end
|
@@ -27,7 +27,7 @@ class Chef
|
|
27
27
|
Chef::Log.debug("openstack_username #{Chef::Config[:knife][:openstack_username]}")
|
28
28
|
Chef::Log.debug("openstack_auth_url #{Chef::Config[:knife][:openstack_auth_url]}")
|
29
29
|
Chef::Log.debug("openstack_tenant #{Chef::Config[:knife][:openstack_tenant]}")
|
30
|
-
Chef::Log.debug("openstack_endpoint_type #{Chef::Config[:knife][:openstack_endpoint_type] ||
|
30
|
+
Chef::Log.debug("openstack_endpoint_type #{Chef::Config[:knife][:openstack_endpoint_type] || "publicURL"}")
|
31
31
|
Chef::Log.debug("openstack_insecure #{Chef::Config[:knife][:openstack_insecure]}")
|
32
32
|
Chef::Log.debug("openstack_region #{Chef::Config[:knife][:openstack_region]}")
|
33
33
|
|
@@ -72,6 +72,7 @@ class Chef
|
|
72
72
|
[:openstack_api_key]
|
73
73
|
).each do |k|
|
74
74
|
next unless k.to_s.start_with?("openstack")
|
75
|
+
|
75
76
|
params[k] = Chef::Config[:knife][k]
|
76
77
|
end
|
77
78
|
params[:openstack_api_key] = Chef::Config[:knife][:openstack_password] || Chef::Config[:knife][:openstack_api_key]
|
@@ -25,39 +25,39 @@ class Chef
|
|
25
25
|
include FogOptions
|
26
26
|
# Openstack Connection params.
|
27
27
|
option :openstack_username,
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
28
|
+
short: "-A USERNAME",
|
29
|
+
long: "--openstack-username KEY",
|
30
|
+
description: "Your OpenStack Username",
|
31
|
+
proc: proc { |key| Chef::Config[:knife][:openstack_username] = key }
|
32
32
|
|
33
33
|
option :openstack_password,
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
34
|
+
short: "-K SECRET",
|
35
|
+
long: "--openstack-password SECRET",
|
36
|
+
description: "Your OpenStack Password",
|
37
|
+
proc: proc { |key| Chef::Config[:knife][:openstack_password] = key }
|
38
38
|
|
39
39
|
option :openstack_tenant,
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
40
|
+
short: "-T NAME",
|
41
|
+
long: "--openstack-tenant NAME",
|
42
|
+
description: "Your OpenStack Tenant NAME",
|
43
|
+
proc: proc { |key| Chef::Config[:knife][:openstack_tenant] = key }
|
44
44
|
|
45
45
|
option :openstack_auth_url,
|
46
|
-
|
47
|
-
|
48
|
-
|
46
|
+
long: "--openstack-api-endpoint ENDPOINT",
|
47
|
+
description: "Your OpenStack API endpoint",
|
48
|
+
proc: proc { |endpoint| Chef::Config[:knife][:openstack_auth_url] = endpoint }
|
49
49
|
|
50
50
|
option :openstack_endpoint_type,
|
51
|
-
|
52
|
-
|
53
|
-
|
51
|
+
long: "--openstack-endpoint-type ENDPOINT_TYPE",
|
52
|
+
description: "OpenStack endpoint type to use (publicURL, internalURL, adminURL)",
|
53
|
+
proc: proc { |type| Chef::Config[:knife][:openstack_endpoint_type] = type }
|
54
54
|
|
55
55
|
option :openstack_insecure,
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
56
|
+
long: "--insecure",
|
57
|
+
description: "Ignore SSL certificate on the Auth URL",
|
58
|
+
boolean: true,
|
59
|
+
default: false,
|
60
|
+
proc: proc { |key| Chef::Config[:knife][:openstack_insecure] = key }
|
61
61
|
end
|
62
62
|
end
|
63
63
|
end
|
@@ -17,8 +17,8 @@
|
|
17
17
|
#
|
18
18
|
|
19
19
|
require "chef/knife/cloud/list_resource_command"
|
20
|
-
|
21
|
-
|
20
|
+
require_relative "openstack_helpers"
|
21
|
+
require_relative "cloud/openstack_service_options"
|
22
22
|
|
23
23
|
class Chef
|
24
24
|
class Knife
|
@@ -16,8 +16,8 @@
|
|
16
16
|
# limitations under the License.
|
17
17
|
#
|
18
18
|
|
19
|
-
|
20
|
-
|
19
|
+
require_relative "openstack_helpers"
|
20
|
+
require_relative "cloud/openstack_service_options"
|
21
21
|
require "chef/knife/cloud/command"
|
22
22
|
|
23
23
|
class Chef
|
@@ -30,10 +30,10 @@ class Chef
|
|
30
30
|
banner "knife openstack floating_ip allocate (options)"
|
31
31
|
|
32
32
|
option :pool,
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
33
|
+
short: "-p POOL",
|
34
|
+
long: "--pool POOL",
|
35
|
+
description: "Floating IP pool to allocate from.",
|
36
|
+
proc: proc { |key| Chef::Config[:knife][:pool] = key }
|
37
37
|
|
38
38
|
def execute_command
|
39
39
|
@resource = @service.allocate_address(locate_config_value(:pool))
|
@@ -16,9 +16,9 @@
|
|
16
16
|
# limitations under the License.
|
17
17
|
#
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
|
19
|
+
require_relative "openstack_helpers"
|
20
|
+
require_relative "cloud/openstack_service_options"
|
21
|
+
require_relative "cloud/openstack_service"
|
22
22
|
require "chef/knife/cloud/command"
|
23
23
|
|
24
24
|
class Chef
|
@@ -31,10 +31,10 @@ class Chef
|
|
31
31
|
banner "knife openstack floating_ip associate IP (options)"
|
32
32
|
|
33
33
|
option :instance_id,
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
34
|
+
long: "--instance-id ID",
|
35
|
+
description: "Instance id to associate it with.",
|
36
|
+
proc: proc { |key| Chef::Config[:knife][:instance_id] = key },
|
37
|
+
required: true
|
38
38
|
|
39
39
|
def execute_command
|
40
40
|
if @name_args[0]
|
@@ -16,9 +16,9 @@
|
|
16
16
|
# limitations under the License.
|
17
17
|
#
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
|
19
|
+
require_relative "openstack_helpers"
|
20
|
+
require_relative "cloud/openstack_service_options"
|
21
|
+
require_relative "cloud/openstack_service"
|
22
22
|
require "chef/knife/cloud/command"
|
23
23
|
|
24
24
|
class Chef
|
@@ -31,10 +31,10 @@ class Chef
|
|
31
31
|
banner "knife openstack floating_ip disassociate IP (options)"
|
32
32
|
|
33
33
|
option :instance_id,
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
34
|
+
long: "--instance-id ID",
|
35
|
+
description: "Instance id to disassociate with.",
|
36
|
+
proc: proc { |key| Chef::Config[:knife][:instance_id] = key },
|
37
|
+
required: true
|
38
38
|
|
39
39
|
def execute_command
|
40
40
|
if @name_args[0]
|
@@ -17,8 +17,8 @@
|
|
17
17
|
#
|
18
18
|
|
19
19
|
require "chef/knife/cloud/list_resource_command"
|
20
|
-
|
21
|
-
|
20
|
+
require_relative "openstack_helpers"
|
21
|
+
require_relative "cloud/openstack_service_options"
|
22
22
|
|
23
23
|
class Chef
|
24
24
|
class Knife
|
@@ -16,8 +16,8 @@
|
|
16
16
|
# limitations under the License.
|
17
17
|
#
|
18
18
|
|
19
|
-
|
20
|
-
|
19
|
+
require_relative "openstack_helpers"
|
20
|
+
require_relative "cloud/openstack_service_options"
|
21
21
|
require "chef/knife/cloud/command"
|
22
22
|
|
23
23
|
class Chef
|
@@ -16,8 +16,8 @@
|
|
16
16
|
#
|
17
17
|
|
18
18
|
require "chef/knife/cloud/list_resource_command"
|
19
|
-
|
20
|
-
|
19
|
+
require_relative "openstack_helpers"
|
20
|
+
require_relative "cloud/openstack_service_options"
|
21
21
|
require "chef/json_compat"
|
22
22
|
|
23
23
|
class Chef
|
@@ -33,7 +33,7 @@ class Chef
|
|
33
33
|
@service.connection.security_groups
|
34
34
|
rescue Excon::Errors::BadRequest => e
|
35
35
|
response = Chef::JSONCompat.from_json(e.response.body)
|
36
|
-
ui.fatal("Unknown server error (#{response[
|
36
|
+
ui.fatal("Unknown server error (#{response["badRequest"]["code"]}): #{response["badRequest"]["message"]}")
|
37
37
|
raise e
|
38
38
|
end
|
39
39
|
|
@@ -15,7 +15,7 @@
|
|
15
15
|
# limitations under the License.
|
16
16
|
#
|
17
17
|
|
18
|
-
|
18
|
+
require_relative "cloud/openstack_service_options"
|
19
19
|
|
20
20
|
class Chef
|
21
21
|
class Knife
|
@@ -48,7 +48,7 @@ class Chef
|
|
48
48
|
ips.each do |ip|
|
49
49
|
version = "IPv6" if ip["version"] == 6
|
50
50
|
version = "IPv4" if ip["version"] == 4
|
51
|
-
info << "#{addresses.keys[0]}:#{version}: #{ip[
|
51
|
+
info << "#{addresses.keys[0]}:#{version}: #{ip["addr"]}"
|
52
52
|
end
|
53
53
|
end
|
54
54
|
info.join(" ")
|
@@ -17,8 +17,8 @@
|
|
17
17
|
#
|
18
18
|
|
19
19
|
require "chef/knife/cloud/list_resource_command"
|
20
|
-
|
21
|
-
|
20
|
+
require_relative "openstack_helpers"
|
21
|
+
require_relative "cloud/openstack_service_options"
|
22
22
|
|
23
23
|
class Chef
|
24
24
|
class Knife
|
@@ -30,10 +30,10 @@ class Chef
|
|
30
30
|
banner "knife openstack image list (options)"
|
31
31
|
|
32
32
|
option :disable_filter,
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
33
|
+
long: "--disable-filter",
|
34
|
+
description: "Disable filtering of the image list. Currently filters names ending with 'initrd' or 'kernel'",
|
35
|
+
boolean: true,
|
36
|
+
default: false
|
37
37
|
|
38
38
|
def before_exec_command
|
39
39
|
# set resource_filters
|
@@ -17,8 +17,8 @@
|
|
17
17
|
#
|
18
18
|
|
19
19
|
require "chef/knife/cloud/list_resource_command"
|
20
|
-
|
21
|
-
|
20
|
+
require_relative "openstack_helpers"
|
21
|
+
require_relative "cloud/openstack_service_options"
|
22
22
|
|
23
23
|
class Chef
|
24
24
|
class Knife
|
@@ -19,10 +19,10 @@
|
|
19
19
|
#
|
20
20
|
|
21
21
|
require "chef/knife/cloud/server/create_command"
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
22
|
+
require_relative "openstack_helpers"
|
23
|
+
require_relative "cloud/openstack_server_create_options"
|
24
|
+
require_relative "cloud/openstack_service"
|
25
|
+
require_relative "cloud/openstack_service_options"
|
26
26
|
require "chef/knife/cloud/exceptions"
|
27
27
|
|
28
28
|
class Chef
|
@@ -203,6 +203,7 @@ class Chef
|
|
203
203
|
|
204
204
|
addresses = service.connection.addresses
|
205
205
|
return false if addresses.empty? # no floating IPs
|
206
|
+
|
206
207
|
# floating requested without value
|
207
208
|
if address.nil?
|
208
209
|
if addresses.find_index { |a| a.fixed_ip.nil? }
|
@@ -19,9 +19,9 @@
|
|
19
19
|
|
20
20
|
require "chef/knife/cloud/server/delete_options"
|
21
21
|
require "chef/knife/cloud/server/delete_command"
|
22
|
-
|
23
|
-
|
24
|
-
|
22
|
+
require_relative "cloud/openstack_service"
|
23
|
+
require_relative "cloud/openstack_service_options"
|
24
|
+
require_relative "openstack_helpers"
|
25
25
|
|
26
26
|
class Chef
|
27
27
|
class Knife
|
@@ -20,8 +20,8 @@
|
|
20
20
|
#
|
21
21
|
|
22
22
|
require "chef/knife/cloud/server/list_command"
|
23
|
-
|
24
|
-
|
23
|
+
require_relative "openstack_helpers"
|
24
|
+
require_relative "cloud/openstack_service_options"
|
25
25
|
require "chef/knife/cloud/server/list_options"
|
26
26
|
|
27
27
|
class Chef
|
@@ -16,10 +16,10 @@
|
|
16
16
|
#
|
17
17
|
|
18
18
|
require "chef/knife/cloud/server/show_command"
|
19
|
-
|
19
|
+
require_relative "openstack_helpers"
|
20
20
|
require "chef/knife/cloud/server/show_options"
|
21
|
-
|
22
|
-
|
21
|
+
require_relative "cloud/openstack_service"
|
22
|
+
require_relative "cloud/openstack_service_options"
|
23
23
|
require "chef/knife/cloud/exceptions"
|
24
24
|
|
25
25
|
class Chef
|
@@ -19,8 +19,8 @@
|
|
19
19
|
#
|
20
20
|
|
21
21
|
require "chef/knife/cloud/list_resource_command"
|
22
|
-
|
23
|
-
|
22
|
+
require_relative "openstack_helpers"
|
23
|
+
require_relative "cloud/openstack_service_options"
|
24
24
|
require "chef/json_compat"
|
25
25
|
|
26
26
|
class Chef
|
@@ -36,7 +36,7 @@ class Chef
|
|
36
36
|
@service.connection.volumes
|
37
37
|
rescue Excon::Errors::BadRequest => e
|
38
38
|
response = Chef::JSONCompat.from_json(e.response.body)
|
39
|
-
ui.fatal("Unknown server error (#{response[
|
39
|
+
ui.fatal("Unknown server error (#{response["badRequest"]["code"]}): #{response["badRequest"]["message"]}")
|
40
40
|
raise e
|
41
41
|
end
|
42
42
|
|
@@ -58,7 +58,7 @@ class Chef
|
|
58
58
|
end
|
59
59
|
rescue Excon::Errors::BadRequest => e
|
60
60
|
response = Chef::JSONCompat.from_json(e.response.body)
|
61
|
-
ui.fatal("Unknown server error (#{response[
|
61
|
+
ui.fatal("Unknown server error (#{response["badRequest"]["code"]}): #{response["badRequest"]["message"]}")
|
62
62
|
raise e
|
63
63
|
end
|
64
64
|
puts ui.list(volume_list, :uneven_columns_across, 5)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: knife-openstack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- JJ Asghar
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-12-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fog
|
@@ -42,16 +42,22 @@ dependencies:
|
|
42
42
|
name: knife-cloud
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: 1.2.0
|
48
|
+
- - "<"
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: '3.0'
|
48
51
|
type: :runtime
|
49
52
|
prerelease: false
|
50
53
|
version_requirements: !ruby/object:Gem::Requirement
|
51
54
|
requirements:
|
52
|
-
- - "
|
55
|
+
- - ">="
|
53
56
|
- !ruby/object:Gem::Version
|
54
57
|
version: 1.2.0
|
58
|
+
- - "<"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '3.0'
|
55
61
|
description: A Chef knife plugin for OpenStack clouds.
|
56
62
|
email:
|
57
63
|
- jj@chef.io
|
@@ -98,8 +104,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
98
104
|
- !ruby/object:Gem::Version
|
99
105
|
version: '0'
|
100
106
|
requirements: []
|
101
|
-
|
102
|
-
rubygems_version: 2.7.6
|
107
|
+
rubygems_version: 3.0.3
|
103
108
|
signing_key:
|
104
109
|
specification_version: 4
|
105
110
|
summary: A Chef knife plugin for OpenStack clouds.
|