knife-vrealize 6.0.0 → 7.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 26774900025bacb20c92669ec354fa5eecf896a05e5dc0360639bc3c58b58998
4
- data.tar.gz: c374fd4befb4616243716ddd664a509f13c33d9a1254d1c0af3985103604c7dd
3
+ metadata.gz: 82a3ba6a329237518849cf8dd289a8bb419a44a0625bd4cb2749fc5703b96cac
4
+ data.tar.gz: '0835ab33c89a8c15910ad3a413cd32e6fe561a052fb4dc6591005290a6f71577'
5
5
  SHA512:
6
- metadata.gz: 29be7394fb628f6ff10f98e63b3d4a01ec3ab7bcdc8d23c35140dc754481051be09bd9668ce2f73ee169d9f380197c8114bf611e90e9e6fcb142ff0cbfaf2a94
7
- data.tar.gz: 48870906b9cc159ff4c95faac60f3a4a1e8657b9b1f82003e0441534eb1b2fda359fba59869b0502b6e67cbf3631e1674f51e3fa3be635dd25bd1a70a7a454ef
6
+ metadata.gz: eb42ddad92fa6beb58a3f8147bc7c0d10e6f85cbbdc42ccb88cb365252aa4a16fed10233c895ee5b6e01a195df5c08efc3b2b84c043c2558f9a53fd03cf4f2e0
7
+ data.tar.gz: b2a456df3b78bf29156eaab3d35b09a9286c7624c24de77dd580e9f5870025ac787ead37ac296ff05527a4fccb7b528c8619078c9557557d6073f899176f13ad
@@ -54,11 +54,11 @@ class Chef
54
54
  def create_server(options = {})
55
55
  submitted_request = catalog_request(options).submit
56
56
  ui.msg("Catalog request #{submitted_request.id} submitted.")
57
- wait_for_request(submitted_request, options[:wait_time].to_i, options[:refresh_rate])
57
+ wait_for_request(submitted_request, (options[:wait_time] || 600).to_i, options[:refresh_rate] || 2)
58
58
  ui.msg("Catalog request complete.\n")
59
59
  request_summary(submitted_request)
60
60
 
61
- raise CloudExceptions::ServerCreateError, submitted_request.completion_details if submitted_request.failed?
61
+ raise CloudExceptions::ServerCreateError if submitted_request.failed?
62
62
 
63
63
  servers = submitted_request.resources.select(&:vm?)
64
64
  raise CloudExceptions::ServerCreateError, "The vRA request created more than one server, but we were only expecting 1" if servers.length > 1
@@ -67,8 +67,9 @@ class Chef
67
67
  servers.first
68
68
  end
69
69
 
70
- def delete_server(instance_id)
71
- server = get_server(instance_id)
70
+ def delete_server(deployment_id)
71
+ deployment = get_deployment(deployment_id)
72
+ server = deployment.resources.select(&:vm?).first
72
73
  server_summary(server)
73
74
  ui.msg("")
74
75
 
@@ -79,7 +80,7 @@ class Chef
79
80
 
80
81
  ui.confirm("Do you really want to delete this server")
81
82
 
82
- destroy_request = server.destroy
83
+ destroy_request = deployment.destroy
83
84
  ui.msg("Destroy request #{destroy_request.id} submitted.")
84
85
  wait_for_request(destroy_request)
85
86
  ui.msg("Destroy request complete.")
@@ -87,48 +88,50 @@ class Chef
87
88
  end
88
89
 
89
90
  def list_servers
90
- connection.resources.all_resources.select(&:vm?)
91
+ connection.deployments.all
91
92
  end
92
93
 
93
- def list_catalog_items(entitled)
94
+ def list_catalog_items(project_id, entitled)
94
95
  if entitled
95
- connection.catalog.entitled_items
96
+ connection.catalog.entitled_items(project_id)
96
97
  else
97
98
  connection.catalog.all_items
98
99
  end
99
100
  end
100
101
 
101
- def get_server(instance_id)
102
- connection.resources.by_id(instance_id)
102
+ def get_deployment(deployment_id)
103
+ connection.deployments.by_id(deployment_id)
104
+ end
105
+
106
+ def get_server(deployment_id)
107
+ deployment = connection.deployments.by_id(deployment_id)
108
+ deployment.resources.select(&:vm?).first
103
109
  end
104
110
 
105
111
  def server_summary(server, _columns_with_info = nil)
106
- msg_pair("Server ID", server.id)
107
- msg_pair("Server Name", server.name)
108
- msg_pair("IP Addresses", server.ip_addresses.nil? ? "none" : server.ip_addresses.join(", "))
112
+ deployment = connection.deployments.by_id(server.deployment_id)
113
+ msg_pair("Deployment ID", deployment.id)
114
+ msg_pair("Deployment Name", deployment.name)
115
+ msg_pair("IP Address", server.ip_address.nil? ? "none" : server.ip_address)
109
116
  msg_pair("Status", server.status)
110
- msg_pair("Catalog Name", server.catalog_name)
111
- msg_pair("Owner IDs", server.owner_ids.empty? ? "none" : server.owner_ids.join(", "))
112
- msg_pair("Owner Names", server.owner_names.empty? ? "none" : server.owner_names.join(", "))
117
+ msg_pair("Owner Names", server.owner_names.empty? ? "none" : server.owner_names)
113
118
  end
114
119
 
115
120
  def request_summary(request)
116
121
  ui.msg("")
117
122
  msg_pair("Request Status", request.status)
118
- msg_pair("Completion State", request.completion_state)
119
- msg_pair("Completion Details", request.completion_details)
120
123
  ui.msg("")
121
124
  end
122
125
 
123
126
  def catalog_request(options)
124
127
  catalog_request = connection.catalog.request(options[:catalog_id])
125
128
 
126
- catalog_request.cpus = options[:cpus]
127
- catalog_request.memory = options[:memory]
128
- catalog_request.requested_for = options[:requested_for]
129
- catalog_request.lease_days = options[:lease_days] unless options[:lease_days].nil?
130
- catalog_request.notes = options[:notes] unless options[:notes].nil?
131
- catalog_request.subtenant_id = options[:subtenant_id] unless options[:subtenant_id].nil?
129
+ catalog_request.image_mapping = options[:image_mapping]
130
+ catalog_request.flavor_mapping = options[:flavor_mapping]
131
+ catalog_request.name = options[:name]
132
+ catalog_request.project_id = options[:project_id]
133
+ catalog_request.version = options[:version] unless options[:version].nil?
134
+
132
135
  options[:extra_params]&.each do |param|
133
136
  catalog_request.set_parameter(param[:key], param[:type], param[:value])
134
137
  end
@@ -36,6 +36,10 @@ class Chef
36
36
  include VraServiceHelpers
37
37
  end
38
38
 
39
+ option :project_id,
40
+ long: "--project-id",
41
+ description: "Catalogs are retrieved using the Project ID"
42
+
39
43
  option :entitled,
40
44
  long: "--entitled-only",
41
45
  description: "only list entitled vRA catalog entries",
@@ -47,15 +51,14 @@ class Chef
47
51
  { label: "Catalog ID", key: "id" },
48
52
  { label: "Name", key: "name" },
49
53
  { label: "Description", key: "description" },
50
- { label: "Status", key: "status", value_callback: method(:format_status_value) },
51
- { label: "Subtenant", key: "subtenant_name" },
54
+ { label: "Source", key: "source_name" },
52
55
  ]
53
56
 
54
57
  @sort_by_field = "name"
55
58
  end
56
59
 
57
60
  def query_resource
58
- @service.list_catalog_items(config[:entitled])
61
+ @service.list_catalog_items(config[:project_id], config[:entitled])
59
62
  end
60
63
 
61
64
  def format_status_value(status)
@@ -22,54 +22,46 @@ require "chef/knife"
22
22
  require "chef/knife/cloud/server/create_command"
23
23
  require "chef/knife/cloud/server/create_options"
24
24
  require_relative "cloud/vra_service_options"
25
+ require_relative "cloud/vra_service_helpers"
25
26
 
26
27
  class Chef
27
28
  class Knife
28
29
  class Cloud
29
30
  class VraServerCreate < ServerCreateCommand
30
- include VraServiceHelpers
31
31
  include VraServiceOptions
32
32
  include ServerCreateOptions
33
+ include VraServiceHelpers
33
34
 
34
35
  banner "knife vra server create CATALOG_ID (options)"
35
36
 
36
37
  deps do
37
38
  require_relative "cloud/vra_service"
38
- require_relative "cloud/vra_service_helpers"
39
39
  end
40
40
 
41
- option :cpus,
42
- long: "--cpus NUM_CPUS",
43
- description: "Number of CPUs the server should have"
44
-
45
- option :node_ssl_verify_mode,
46
- long: "--node-ssl-verify-mode [peer|none]",
47
- description: "Whether or not to verify the SSL cert for all HTTPS requests when bootstrapping"
48
- option :memory,
49
- long: "--memory RAM_IN_MB",
50
- description: "Amount of RAM, in MB, the server should have"
41
+ option :project_id,
42
+ long: "--project-id PROJECT_ID",
43
+ description: "ID of the project"
51
44
 
52
- option :requested_for,
53
- long: "--requested-for LOGIN",
54
- description: "The login to list as the owner of this resource. Will default to the vra_username parameter"
45
+ option :image_mapping,
46
+ long: "--image-mapping IMAGE_MAPPING",
47
+ description: "Specifies the OS image for the new VM"
55
48
 
56
49
  option :server_create_timeout,
57
50
  long: "--server-create-timeout SECONDS",
58
51
  description: "number of seconds to wait for the server to complete",
59
52
  default: 600
60
53
 
61
- option :subtenant_id,
62
- long: "--subtenant-id ID",
63
- description: 'The subtenant ID (a.k.a "business group") to list as the owner of this resource. ' \
64
- "Will default to the blueprint subtenant if it exists."
54
+ option :flavor_mapping,
55
+ long: "--flavor-mapping FLAVOR_MAPPING",
56
+ description: "Specifies the CPU count and RAM for the new VM"
65
57
 
66
- option :lease_days,
67
- long: "--lease-days NUM_DAYS",
68
- description: "Number of days requested for the server lease, provided the blueprint allows this to be specified"
58
+ option :version,
59
+ long: "--version VERSION",
60
+ description: "Specifies the version of the catalog to be used. By default the latest version will be used."
69
61
 
70
- option :notes,
71
- long: "--notes NOTES",
72
- description: "String of text to be included in the request notes."
62
+ option :name,
63
+ long: "--name NAME",
64
+ description: "Name for the newly created deployment"
73
65
 
74
66
  option :extra_params,
75
67
  long: "--extra-param KEY=TYPE:VALUE",
@@ -90,7 +82,7 @@ class Chef
90
82
  exit 1
91
83
  end
92
84
 
93
- check_for_missing_config_values!(:cpus, :memory, :requested_for)
85
+ check_for_missing_config_values!(:name, :flavor_mapping, :image_mapping, :project_id)
94
86
 
95
87
  validate_extra_params!
96
88
  end
@@ -100,22 +92,19 @@ class Chef
100
92
 
101
93
  @create_options = {
102
94
  catalog_id: @name_args.first,
103
- cpus: config[:cpus],
104
- memory: config[:memory],
105
- requested_for: config[:requested_for],
106
- subtenant_id: config[:subtenant_id],
107
- lease_days: config[:lease_days],
108
- notes: config[:notes],
95
+ project_id: config[:project_id],
96
+ image_mapping: config[:image_mapping],
97
+ flavor_mapping: config[:flavor_mapping],
98
+ version: config[:version],
99
+ name: config[:name],
109
100
  extra_params: extra_params,
110
- wait_time: config[:server_create_timeout],
111
- refresh_rate: config[:request_refresh_rate],
112
101
  }
113
102
  end
114
103
 
115
104
  def before_bootstrap
116
105
  super
117
106
 
118
- config[:chef_node_name] = config[:chef_node_name] ? config[:chef_node_name] : server.name
107
+ config[:chef_node_name] ||= server.name
119
108
  config[:bootstrap_ip_address] = hostname_for_server
120
109
  end
121
110
 
@@ -139,7 +128,7 @@ class Chef
139
128
  end
140
129
 
141
130
  def hostname_for_server
142
- ip_address = server.ip_addresses.first
131
+ ip_address = server.ip_address
143
132
 
144
133
  ip_address.nil? ? server.name : ip_address
145
134
  end
@@ -30,7 +30,7 @@ class Chef
30
30
  include ServerDeleteOptions
31
31
  include VraServiceOptions
32
32
 
33
- banner "knife vra server delete RESOURCE_ID [RESOURCE_ID] (options)"
33
+ banner "knife vra server delete DEPLOYMENT_ID [DEPLOYMENT_ID] (options)"
34
34
 
35
35
  deps do
36
36
  require_relative "cloud/vra_service"
@@ -39,10 +39,11 @@ class Chef
39
39
 
40
40
  def before_exec_command
41
41
  @columns_with_info = [
42
- { label: "Resource ID", key: "id" },
43
- { label: "Name", key: "name" },
44
- { label: "Status", key: "status", value_callback: method(:format_status_value) },
45
- { label: "Catalog Name", key: "catalog_name" },
42
+ { label: "Deployment ID", key: "id" },
43
+ { label: "Name", key: "name" },
44
+ { label: "Status", key: "status", value_callback: method(:format_status_value) },
45
+ { label: "Owner", key: "owner" },
46
+ { label: "Description", key: "description" },
46
47
  ]
47
48
 
48
49
  @sort_by_field = "name"
@@ -30,7 +30,7 @@ class Chef
30
30
  include ServerShowOptions
31
31
  include VraServiceOptions
32
32
 
33
- banner "knife vra server show RESOURCE_ID (options)"
33
+ banner "knife vra server show DEPLOYMENT_ID (options)"
34
34
 
35
35
  deps do
36
36
  require_relative "cloud/vra_service"
@@ -40,12 +40,12 @@ class Chef
40
40
 
41
41
  def validate_params!
42
42
  if @name_args.empty?
43
- ui.error("You must supply a Resource ID for a server to display.")
43
+ ui.error("You must supply a Deployment ID for a server to display.")
44
44
  exit 1
45
45
  end
46
46
 
47
47
  if @name_args.size > 1
48
- ui.error("You may only supply one Resource ID.")
48
+ ui.error("You may only supply one Deployment ID.")
49
49
  exit 1
50
50
  end
51
51
 
@@ -19,5 +19,5 @@
19
19
  #
20
20
 
21
21
  module KnifeVrealize
22
- VERSION = "6.0.0"
22
+ VERSION = "7.0.0"
23
23
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: knife-vrealize
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.0.0
4
+ version: 7.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chef Software
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-08-07 00:00:00.000000000 Z
11
+ date: 2022-05-19 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: knife
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: knife-cloud
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -36,14 +50,14 @@ dependencies:
36
50
  requirements:
37
51
  - - "~>"
38
52
  - !ruby/object:Gem::Version
39
- version: '2'
53
+ version: '3'
40
54
  type: :runtime
41
55
  prerelease: false
42
56
  version_requirements: !ruby/object:Gem::Requirement
43
57
  requirements:
44
58
  - - "~>"
45
59
  - !ruby/object:Gem::Version
46
- version: '2'
60
+ version: '3'
47
61
  - !ruby/object:Gem::Dependency
48
62
  name: vcoworkflows
49
63
  requirement: !ruby/object:Gem::Requirement
@@ -102,14 +116,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
102
116
  requirements:
103
117
  - - ">="
104
118
  - !ruby/object:Gem::Version
105
- version: '2.6'
119
+ version: '2.7'
106
120
  required_rubygems_version: !ruby/object:Gem::Requirement
107
121
  requirements:
108
122
  - - ">="
109
123
  - !ruby/object:Gem::Version
110
124
  version: '0'
111
125
  requirements: []
112
- rubygems_version: 3.0.3
126
+ rubygems_version: 3.1.4
113
127
  signing_key:
114
128
  specification_version: 4
115
129
  summary: Chef Infra Knife plugin to interact with VMware vRealize.