hammer_cli_foreman 3.4.0 → 3.5.1
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/config/foreman.yml +5 -0
- data/doc/release_notes.md +9 -0
- data/lib/hammer_cli_foreman/api/authenticator.rb +20 -0
- data/lib/hammer_cli_foreman/api/basic_auth.rb +71 -0
- data/lib/hammer_cli_foreman/api/connection.rb +3 -2
- data/lib/hammer_cli_foreman/api/interactive_basic_auth.rb +3 -62
- data/lib/hammer_cli_foreman/api/interactive_basic_auth_external.rb +17 -0
- data/lib/hammer_cli_foreman/api/negotiate_auth.rb +1 -1
- data/lib/hammer_cli_foreman/api/session_authenticator_wrapper.rb +2 -2
- data/lib/hammer_cli_foreman/auth.rb +21 -0
- data/lib/hammer_cli_foreman/command_extensions/compute_resource_subcommand.rb +14 -0
- data/lib/hammer_cli_foreman/command_extensions.rb +1 -0
- data/lib/hammer_cli_foreman/compute_resource/register_compute_resources.rb +0 -1
- data/lib/hammer_cli_foreman/compute_resource/vmware.rb +3 -1
- data/lib/hammer_cli_foreman/compute_resource.rb +26 -6
- data/lib/hammer_cli_foreman/version.rb +1 -1
- data/lib/hammer_cli_foreman/virtual_machine.rb +0 -4
- data/locale/ca/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/de/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/en/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/en_GB/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/es/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/fr/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/it/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/ja/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/ko/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/pt_BR/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/ru/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/zh_CN/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/zh_TW/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/test/functional/compute_resource_test.rb +21 -0
- data/test/unit/api/interactive_basic_auth_test.rb +2 -1
- metadata +78 -76
- data/lib/hammer_cli_foreman/compute_resource/gce.rb +0 -47
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: dc16859a1c7009f413c77229f58397aba4b0030da06342777e48a71175c63830
|
|
4
|
+
data.tar.gz: 595d6c7713563d97dea1cceb7d046c5f665d5e07fa2c6a133931959a4b1c0246
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: cb12b697b14fc4abc05c05363e16ff77d07a98b11584af354007397aeaf26c6cebdf7086e8d84828f711ef1814cb7307febe269bbb32920e8240ad0b79e714a2
|
|
7
|
+
data.tar.gz: 9e21177108564c9e0bd394fdd2603e06b4d2f3a50c9936d00ca800da2ec8ce28c1ee295f28434da5e011f12332dea7eaaf9ccd4104bf05734adbbec27027479f
|
data/config/foreman.yml
CHANGED
|
@@ -13,6 +13,11 @@
|
|
|
13
13
|
:username: 'admin'
|
|
14
14
|
#:password: 'example'
|
|
15
15
|
|
|
16
|
+
# Basic Auth External:
|
|
17
|
+
#:default_auth_type: 'Basic_Auth_External'
|
|
18
|
+
#:username: 'admin'
|
|
19
|
+
#:password: 'example'
|
|
20
|
+
|
|
16
21
|
# Oauth using the Password Grant Flow:
|
|
17
22
|
# This authentication method requires sessions to be enabled, uncomment the following
|
|
18
23
|
# lines to use this authentication method.
|
data/doc/release_notes.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
Release notes
|
|
2
2
|
=============
|
|
3
|
+
### 3.5.1 (2023-02-28)
|
|
4
|
+
* Support basic auth for external sources, [#11317](http://projects.theforeman.org/issues/11317)
|
|
5
|
+
|
|
6
|
+
### 3.5.0 (2022-10-31)
|
|
7
|
+
* Extract gce related info ([PR #606](https://github.com/theforeman/hammer-cli-foreman/pull/606)), [#35659](http://projects.theforeman.org/issues/35659)
|
|
8
|
+
* Change auth endpoint for negotiation, [#35473](http://projects.theforeman.org/issues/35473)
|
|
9
|
+
* Enhance vmware listing commands and switch to cluster_name param ([PR #604](https://github.com/theforeman/hammer-cli-foreman/pull/604)), [#35438](http://projects.theforeman.org/issues/35438)
|
|
10
|
+
* Bump to 3.5.0-develop
|
|
11
|
+
|
|
3
12
|
### 3.4.0 (2022-08-09)
|
|
4
13
|
* Add options for table preferences cli ([PR #603](https://github.com/theforeman/hammer-cli-foreman/pull/603)), [#35219](http://projects.theforeman.org/issues/35219)
|
|
5
14
|
* I18n - extracting new, pulling from tx, [#34629](http://projects.theforeman.org/issues/34629)
|
|
@@ -13,6 +13,8 @@ module HammerCLIForeman
|
|
|
13
13
|
void_auth
|
|
14
14
|
elsif auth_type == AUTH_TYPES[:basic_auth]
|
|
15
15
|
basic_auth
|
|
16
|
+
elsif auth_type == AUTH_TYPES[:basic_auth_external]
|
|
17
|
+
basic_auth_external
|
|
16
18
|
elsif auth_type == AUTH_TYPES[:negotiate]
|
|
17
19
|
negotiate_auth
|
|
18
20
|
elsif auth_type == AUTH_TYPES[:oauth_password_grant]
|
|
@@ -45,6 +47,24 @@ module HammerCLIForeman
|
|
|
45
47
|
end
|
|
46
48
|
end
|
|
47
49
|
|
|
50
|
+
def basic_auth_external
|
|
51
|
+
if HammerCLIForeman::Sessions.enabled?
|
|
52
|
+
authenticator = InteractiveBasicAuthExternal.new(
|
|
53
|
+
settings.get(:_params, :username) || ENV['FOREMAN_USERNAME'],
|
|
54
|
+
settings.get(:_params, :password) || ENV['FOREMAN_PASSWORD'],
|
|
55
|
+
uri
|
|
56
|
+
)
|
|
57
|
+
SessionAuthenticatorWrapper.new(authenticator, uri, auth_type)
|
|
58
|
+
else
|
|
59
|
+
username = settings.get(:_params, :username) || ENV['FOREMAN_USERNAME'] || settings.get(:foreman, :username)
|
|
60
|
+
password = settings.get(:_params, :password) || ENV['FOREMAN_PASSWORD']
|
|
61
|
+
if password.nil? && (username == settings.get(:foreman, :username))
|
|
62
|
+
password = settings.get(:foreman, :password)
|
|
63
|
+
end
|
|
64
|
+
InteractiveBasicAuthExternal.new(username, password, uri)
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
48
68
|
def negotiate_auth
|
|
49
69
|
return unless HammerCLIForeman::Sessions.enabled?
|
|
50
70
|
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
module HammerCLIForeman
|
|
2
|
+
module Api
|
|
3
|
+
module BasicAuth
|
|
4
|
+
def authenticate(request, args)
|
|
5
|
+
if HammerCLI.interactive?
|
|
6
|
+
get_user
|
|
7
|
+
get_password
|
|
8
|
+
end
|
|
9
|
+
super
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def error(ex)
|
|
13
|
+
return unless ex.is_a?(RestClient::Unauthorized)
|
|
14
|
+
|
|
15
|
+
clear
|
|
16
|
+
default_message = _('Invalid username or password.')
|
|
17
|
+
message = begin
|
|
18
|
+
response_msg = JSON.parse(ex.response.body)['error']
|
|
19
|
+
response_msg.is_a?(Hash) ? response_msg['message'] : response_msg
|
|
20
|
+
rescue
|
|
21
|
+
end
|
|
22
|
+
return UnauthorizedError.new(default_message) unless message
|
|
23
|
+
|
|
24
|
+
UnauthorizedError.new("#{message}\n#{default_message}")
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def status
|
|
28
|
+
unless @user.nil? || @password.nil?
|
|
29
|
+
_("Using configured credentials for user '%s'.") % @user
|
|
30
|
+
else
|
|
31
|
+
_('Credentials are not configured.')
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def user(ask = nil)
|
|
36
|
+
@user ||= ask && get_user
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def password(ask = nil)
|
|
40
|
+
@password ||= ask && get_password
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def set_credentials(user, password)
|
|
44
|
+
@user = user
|
|
45
|
+
@password = password
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def clear
|
|
49
|
+
set_credentials(nil, nil)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
private
|
|
53
|
+
|
|
54
|
+
def get_user
|
|
55
|
+
@user ||= ask_user(_('[Foreman] Username:%s') % ' ')
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def get_password
|
|
59
|
+
@password ||= ask_user(_("[Foreman] Password for %{user}:%{wsp}") % { user: @user, wsp: ' ' }, true)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def ask_user(prompt, silent = false)
|
|
63
|
+
if silent
|
|
64
|
+
HammerCLI.interactive_output.ask(prompt) { |q| q.echo = false }
|
|
65
|
+
else
|
|
66
|
+
HammerCLI.interactive_output.ask(prompt)
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
require 'hammer_cli_foreman/api/session_authenticator_wrapper'
|
|
2
2
|
require 'hammer_cli_foreman/api/authenticator'
|
|
3
3
|
require 'hammer_cli_foreman/api/interactive_basic_auth'
|
|
4
|
+
require 'hammer_cli_foreman/api/interactive_basic_auth_external'
|
|
4
5
|
require 'hammer_cli_foreman/api/negotiate_auth'
|
|
5
6
|
require 'hammer_cli_foreman/api/oauth/authentication_code_grant'
|
|
6
7
|
require 'hammer_cli_foreman/api/oauth/password_grant'
|
|
@@ -11,6 +12,7 @@ module HammerCLIForeman
|
|
|
11
12
|
CONNECTION_NAME = 'foreman'
|
|
12
13
|
AUTH_TYPES = {
|
|
13
14
|
basic_auth: 'Basic_Auth',
|
|
15
|
+
basic_auth_external: 'Basic_Auth_External',
|
|
14
16
|
negotiate: 'Negotiate_Auth',
|
|
15
17
|
oauth_authentication_code_grant: 'Oauth_Authentication_Code_Grant',
|
|
16
18
|
oauth_password_grant: 'Oauth_Password_Grant'
|
|
@@ -44,8 +46,7 @@ module HammerCLIForeman
|
|
|
44
46
|
|
|
45
47
|
protected
|
|
46
48
|
|
|
47
|
-
def default_auth_type(
|
|
48
|
-
return AUTH_TYPES[:basic_auth] unless HammerCLIForeman::Sessions.enabled?
|
|
49
|
+
def default_auth_type(_settings)
|
|
49
50
|
HammerCLI::Settings.get(:foreman, :default_auth_type) || AUTH_TYPES[:basic_auth]
|
|
50
51
|
end
|
|
51
52
|
|
|
@@ -1,68 +1,9 @@
|
|
|
1
|
+
require 'hammer_cli_foreman/api/basic_auth'
|
|
2
|
+
|
|
1
3
|
module HammerCLIForeman
|
|
2
4
|
module Api
|
|
3
5
|
class InteractiveBasicAuth < ApipieBindings::Authenticators::BasicAuth
|
|
4
|
-
|
|
5
|
-
if HammerCLI.interactive?
|
|
6
|
-
get_user
|
|
7
|
-
get_password
|
|
8
|
-
end
|
|
9
|
-
super
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def error(ex)
|
|
13
|
-
if ex.is_a?(RestClient::Unauthorized)
|
|
14
|
-
self.clear
|
|
15
|
-
message = _('Invalid username or password.')
|
|
16
|
-
begin
|
|
17
|
-
message = JSON.parse(ex.response.body)['error']['message']
|
|
18
|
-
rescue
|
|
19
|
-
end
|
|
20
|
-
UnauthorizedError.new(message)
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def status
|
|
25
|
-
unless @user.nil? || @password.nil?
|
|
26
|
-
_("Using configured credentials for user '%s'.") % @user
|
|
27
|
-
else
|
|
28
|
-
_("Credentials are not configured.")
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def user(ask=nil)
|
|
33
|
-
@user ||= ask && get_user
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def password(ask=nil)
|
|
37
|
-
@password ||= ask && get_password
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def set_credentials(user, password)
|
|
41
|
-
@user = user
|
|
42
|
-
@password = password
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
def clear
|
|
46
|
-
set_credentials(nil, nil)
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
private
|
|
50
|
-
|
|
51
|
-
def get_user
|
|
52
|
-
@user ||= ask_user(_("[Foreman] Username:%s") % " ")
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
def get_password
|
|
56
|
-
@password ||= ask_user(_("[Foreman] Password for %{user}:%{wsp}") % {:user => @user, :wsp => " "}, true)
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
def ask_user(prompt, silent=false)
|
|
60
|
-
if silent
|
|
61
|
-
HammerCLI.interactive_output.ask(prompt) { |q| q.echo = false }
|
|
62
|
-
else
|
|
63
|
-
HammerCLI.interactive_output.ask(prompt)
|
|
64
|
-
end
|
|
65
|
-
end
|
|
6
|
+
include HammerCLIForeman::Api::BasicAuth
|
|
66
7
|
end
|
|
67
8
|
end
|
|
68
9
|
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
require 'hammer_cli_foreman/api/basic_auth'
|
|
2
|
+
|
|
3
|
+
module HammerCLIForeman
|
|
4
|
+
module Api
|
|
5
|
+
class InteractiveBasicAuthExternal < ApipieBindings::Authenticators::BasicAuthExternal
|
|
6
|
+
include HammerCLIForeman::Api::BasicAuth
|
|
7
|
+
|
|
8
|
+
def initialize(user, password, foreman_url)
|
|
9
|
+
super(user, password, "#{foreman_url}/api/users/extlogin", HammerCLI::SSLOptions.new.get_options(foreman_url))
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def session_id
|
|
13
|
+
auth_cookie&.delete_prefix('_session_id=')
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -2,7 +2,7 @@ module HammerCLIForeman
|
|
|
2
2
|
module Api
|
|
3
3
|
class NegotiateAuth < ApipieBindings::Authenticators::Negotiate
|
|
4
4
|
def initialize(foreman_url, **options)
|
|
5
|
-
super("#{foreman_url}/users/extlogin", HammerCLI::SSLOptions.new.get_options(foreman_url).merge(options))
|
|
5
|
+
super("#{foreman_url}/api/users/extlogin", HammerCLI::SSLOptions.new.get_options(foreman_url).merge(options))
|
|
6
6
|
end
|
|
7
7
|
|
|
8
8
|
def user
|
|
@@ -80,7 +80,7 @@ module HammerCLIForeman
|
|
|
80
80
|
|
|
81
81
|
def user(ask=nil)
|
|
82
82
|
return unless @authenticator.respond_to?(:user)
|
|
83
|
-
if
|
|
83
|
+
if [AUTH_TYPES[:basic_auth], AUTH_TYPES[:basic_auth_external]].include?(@auth_type)
|
|
84
84
|
@authenticator.user(ask)
|
|
85
85
|
elsif @auth_type == AUTH_TYPES[:oauth_authentication_code_grant] ||
|
|
86
86
|
@auth_type = AUTH_TYPES[:oauth_password_grant]
|
|
@@ -93,7 +93,7 @@ module HammerCLIForeman
|
|
|
93
93
|
end
|
|
94
94
|
|
|
95
95
|
def set_auth_params(*args)
|
|
96
|
-
if
|
|
96
|
+
if [AUTH_TYPES[:basic_auth], AUTH_TYPES[:basic_auth_external]].include?(@auth_type)
|
|
97
97
|
@authenticator.set_credentials(*args)
|
|
98
98
|
elsif @auth_type == AUTH_TYPES[:oauth_authentication_code_grant] ||
|
|
99
99
|
@auth_type == AUTH_TYPES[:oauth_password_grant]
|
|
@@ -28,6 +28,27 @@ module HammerCLIForeman
|
|
|
28
28
|
end
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
+
class BasicExternal < HammerCLI::AbstractCommand
|
|
32
|
+
extend HammerCLIForeman::Authenticate::Login
|
|
33
|
+
|
|
34
|
+
command_name 'basic-external'
|
|
35
|
+
desc _('Authenticate against external source (IPA/PAM) with credentials')
|
|
36
|
+
|
|
37
|
+
option ['-u', '--username'], 'USERNAME', _('Username to access the remote system')
|
|
38
|
+
option ['-p', '--password'], 'PASSWORD', _('Password to access the remote system')
|
|
39
|
+
|
|
40
|
+
def execute
|
|
41
|
+
Basic.execute_with_params(
|
|
42
|
+
AUTH_TYPES[:basic_auth_external],
|
|
43
|
+
option_username || HammerCLI::Settings.get('_params', 'username'),
|
|
44
|
+
option_password || HammerCLI::Settings.get('_params', 'password')
|
|
45
|
+
)
|
|
46
|
+
logged_user = HammerCLIForeman.foreman_api_connection.authenticator.user
|
|
47
|
+
print_message(_("Successfully logged in as '%s'.") % logged_user)
|
|
48
|
+
HammerCLI::EX_OK
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
31
52
|
class Negotiate < HammerCLI::AbstractCommand
|
|
32
53
|
extend HammerCLIForeman::Authenticate::Login
|
|
33
54
|
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
module HammerCLIForeman
|
|
2
|
+
module CommandExtensions
|
|
3
|
+
class ComputeResourceSubcommand < HammerCLI::CommandExtensions
|
|
4
|
+
option '--cluster-id', 'ID', _('Cluster ID'),
|
|
5
|
+
deprecated: _('Use --cluster-name instead')
|
|
6
|
+
option '--cluster-name', 'NAME', _('Cluster name or path to search by'),
|
|
7
|
+
attribute_name: :option_cluster_id
|
|
8
|
+
|
|
9
|
+
request_params do |params|
|
|
10
|
+
params['cluster_id'] = params['cluster_id'].gsub('/', '%2F') if params['cluster_id']
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -7,3 +7,4 @@ require 'hammer_cli_foreman/command_extensions/status'
|
|
|
7
7
|
require 'hammer_cli_foreman/command_extensions/user'
|
|
8
8
|
require 'hammer_cli_foreman/command_extensions/subnet'
|
|
9
9
|
require 'hammer_cli_foreman/command_extensions/domain'
|
|
10
|
+
require 'hammer_cli_foreman/command_extensions/compute_resource_subcommand'
|
|
@@ -10,7 +10,6 @@ module HammerCLIForeman
|
|
|
10
10
|
|
|
11
11
|
require 'hammer_cli_foreman/compute_resource/base'
|
|
12
12
|
require 'hammer_cli_foreman/compute_resource/ec2.rb'
|
|
13
|
-
require 'hammer_cli_foreman/compute_resource/gce.rb'
|
|
14
13
|
require 'hammer_cli_foreman/compute_resource/libvirt.rb'
|
|
15
14
|
require 'hammer_cli_foreman/compute_resource/openstack.rb'
|
|
16
15
|
require 'hammer_cli_foreman/compute_resource/ovirt.rb'
|
|
@@ -64,7 +64,9 @@ module HammerCLIForeman
|
|
|
64
64
|
def provider_specific_fields
|
|
65
65
|
super + [
|
|
66
66
|
Fields::Field.new(:label => _('Datacenter'), :path => [:datacenter]),
|
|
67
|
-
Fields::Field.new(:label => _('Server'), :path => [:server])
|
|
67
|
+
Fields::Field.new(:label => _('Server'), :path => [:server]),
|
|
68
|
+
Fields::Boolean.new(:label => _('Console password set'), :path => [:set_console_password]),
|
|
69
|
+
Fields::Boolean.new(:label => _('Caching enabled'), :path => [:caching_enabled])
|
|
68
70
|
]
|
|
69
71
|
end
|
|
70
72
|
|
|
@@ -121,6 +121,9 @@ module HammerCLIForeman
|
|
|
121
121
|
output do
|
|
122
122
|
field :id, _('Id')
|
|
123
123
|
field :name, _('Name')
|
|
124
|
+
field :datacenter, _('Datacenter')
|
|
125
|
+
field :num_host, _('Hosts')
|
|
126
|
+
field :full_path, _('Cluster path')
|
|
124
127
|
end
|
|
125
128
|
|
|
126
129
|
build_options
|
|
@@ -133,9 +136,13 @@ module HammerCLIForeman
|
|
|
133
136
|
output do
|
|
134
137
|
field :id, _('Id'), Fields::Field, :max_width => 200, :hide_blank => true
|
|
135
138
|
field :name, _('Name')
|
|
139
|
+
field :datacenter, _('Datacenter')
|
|
140
|
+
field :virtualswitch, _('Virtual switch')
|
|
141
|
+
field :vlanid, _('VLAN ID')
|
|
136
142
|
end
|
|
137
143
|
|
|
138
|
-
build_options
|
|
144
|
+
build_options without: :cluster_id
|
|
145
|
+
extend_with(HammerCLIForeman::CommandExtensions::ComputeResourceSubcommand.new(only: %i[option request_params]))
|
|
139
146
|
end
|
|
140
147
|
|
|
141
148
|
class AvailableVnicProfilesCommand < HammerCLIForeman::ListCommand
|
|
@@ -158,6 +165,7 @@ module HammerCLIForeman
|
|
|
158
165
|
output do
|
|
159
166
|
field :uuid, _('Uuid')
|
|
160
167
|
field :name, _('Name')
|
|
168
|
+
field :path, _('Path'), Fields::Field, :hide_blank => true
|
|
161
169
|
end
|
|
162
170
|
|
|
163
171
|
build_options
|
|
@@ -182,6 +190,10 @@ module HammerCLIForeman
|
|
|
182
190
|
output do
|
|
183
191
|
field :id, _('Id')
|
|
184
192
|
field :name, _('Name')
|
|
193
|
+
field :parent, _('Parent')
|
|
194
|
+
field :datacenter, _('Datacenter')
|
|
195
|
+
field :path, _('Path'), Fields::Field, :max_width => 50
|
|
196
|
+
field :type, _('Type')
|
|
185
197
|
end
|
|
186
198
|
|
|
187
199
|
build_options
|
|
@@ -206,9 +218,12 @@ module HammerCLIForeman
|
|
|
206
218
|
output do
|
|
207
219
|
field :id, _('Id')
|
|
208
220
|
field :name, _('Name')
|
|
221
|
+
field :cluster, _('Cluster')
|
|
222
|
+
field :datacenter, _('Datacenter')
|
|
209
223
|
end
|
|
210
224
|
|
|
211
|
-
build_options
|
|
225
|
+
build_options without: :cluster_id
|
|
226
|
+
extend_with(HammerCLIForeman::CommandExtensions::ComputeResourceSubcommand.new(only: %i[option request_params]))
|
|
212
227
|
end
|
|
213
228
|
|
|
214
229
|
class AvailableStorageDomainsCommand < HammerCLIForeman::ListCommand
|
|
@@ -220,7 +235,8 @@ module HammerCLIForeman
|
|
|
220
235
|
field :name, _('Name')
|
|
221
236
|
end
|
|
222
237
|
|
|
223
|
-
build_options
|
|
238
|
+
build_options without: :cluster_id
|
|
239
|
+
extend_with(HammerCLIForeman::CommandExtensions::ComputeResourceSubcommand.new(only: %i[option request_params]))
|
|
224
240
|
end
|
|
225
241
|
|
|
226
242
|
class AvailableStoragePodsCommand < HammerCLIForeman::ListCommand
|
|
@@ -230,9 +246,11 @@ module HammerCLIForeman
|
|
|
230
246
|
output do
|
|
231
247
|
field :id, _('Id')
|
|
232
248
|
field :name, _('Name')
|
|
249
|
+
field :datacenter, _('Datacenter')
|
|
233
250
|
end
|
|
234
251
|
|
|
235
|
-
build_options
|
|
252
|
+
build_options without: :cluster_id
|
|
253
|
+
extend_with(HammerCLIForeman::CommandExtensions::ComputeResourceSubcommand.new(only: %i[option request_params]))
|
|
236
254
|
end
|
|
237
255
|
|
|
238
256
|
class AvailableSecurityGroupsCommand < HammerCLIForeman::ListCommand
|
|
@@ -252,8 +270,10 @@ module HammerCLIForeman
|
|
|
252
270
|
command_name 'virtual-machines'
|
|
253
271
|
|
|
254
272
|
output do
|
|
255
|
-
field :id, _(
|
|
256
|
-
field :name, _(
|
|
273
|
+
field :id, _('Id')
|
|
274
|
+
field :name, _('Name')
|
|
275
|
+
field :path, _('Path'), Fields::Field, :max_width => 50
|
|
276
|
+
field :state, _('State')
|
|
257
277
|
end
|
|
258
278
|
|
|
259
279
|
build_options
|
|
@@ -9,7 +9,6 @@ module HammerCLIForeman
|
|
|
9
9
|
class PowerVmCommand < HammerCLIForeman::Command
|
|
10
10
|
action :power_vm
|
|
11
11
|
command_name 'power'
|
|
12
|
-
option "--vm-id", "VM-ID", _("Virtual machine id, for gce use virtual machine name")
|
|
13
12
|
|
|
14
13
|
success_message _("Virtual machine is powering.")
|
|
15
14
|
failure_message _("Could not power the virtual machine")
|
|
@@ -19,7 +18,6 @@ module HammerCLIForeman
|
|
|
19
18
|
|
|
20
19
|
class InfoCommand < HammerCLIForeman::InfoCommand
|
|
21
20
|
action :show_vm
|
|
22
|
-
option "--vm-id", "VM-ID", _("Virtual machine id, for gce use virtual machine name")
|
|
23
21
|
|
|
24
22
|
output do
|
|
25
23
|
field :id, _("Id")
|
|
@@ -39,8 +37,6 @@ module HammerCLIForeman
|
|
|
39
37
|
|
|
40
38
|
class DeleteCommand < HammerCLIForeman::DeleteCommand
|
|
41
39
|
action :destroy_vm
|
|
42
|
-
option "--vm-id", "VM-ID", _("Virtual machine id, for gce use virtual machine name")
|
|
43
|
-
|
|
44
40
|
|
|
45
41
|
success_message _("Virtual machine deleted.")
|
|
46
42
|
failure_message _("Could not delete the virtual machine")
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -355,10 +355,31 @@ end
|
|
|
355
355
|
]
|
|
356
356
|
)
|
|
357
357
|
expected_result = success_result(output)
|
|
358
|
+
expected_result.expected_err = "Warning: Option --cluster-id is deprecated. Use --cluster-name instead\n"
|
|
358
359
|
|
|
359
360
|
result = run_cmd(cmd + params)
|
|
360
361
|
assert_cmd(expected_result, result)
|
|
361
362
|
end
|
|
363
|
+
|
|
364
|
+
it 'lists available resource_pools for a compute resource with updated cluster_name param' do
|
|
365
|
+
api_expects(:compute_resources, :available_resource_pools, 'resource-pools').with_params(
|
|
366
|
+
'id' => '1', 'cluster_id' => 'test%2Ftest1'
|
|
367
|
+
).returns(index_response(resource_pools))
|
|
368
|
+
|
|
369
|
+
cluster_param = base_params + ['--cluster-name=test/test1']
|
|
370
|
+
|
|
371
|
+
output = IndexMatcher.new(
|
|
372
|
+
[
|
|
373
|
+
%w[ID NAME],
|
|
374
|
+
%w[1 resource_pool1],
|
|
375
|
+
%w[2 resource_pool2]
|
|
376
|
+
]
|
|
377
|
+
)
|
|
378
|
+
expected_result = success_result(output)
|
|
379
|
+
|
|
380
|
+
result = run_cmd(cmd + cluster_param)
|
|
381
|
+
assert_cmd(expected_result, result)
|
|
382
|
+
end
|
|
362
383
|
end
|
|
363
384
|
|
|
364
385
|
describe 'storage_domains' do
|
|
@@ -105,8 +105,9 @@ describe HammerCLIForeman::Api::InteractiveBasicAuth do
|
|
|
105
105
|
response.stubs(:body).returns('{"error": {"message": "Unable to authenticate user admin"}}')
|
|
106
106
|
ex.response = response
|
|
107
107
|
new_ex = auth.error(ex)
|
|
108
|
+
expected = "Unable to authenticate user admin\nInvalid username or password."
|
|
108
109
|
|
|
109
|
-
assert_equal
|
|
110
|
+
assert_equal expected, new_ex.message
|
|
110
111
|
end
|
|
111
112
|
end
|
|
112
113
|
|
metadata
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: hammer_cli_foreman
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.
|
|
4
|
+
version: 3.5.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Tomáš Strachota
|
|
8
8
|
- Martin Bačovský
|
|
9
|
-
autorequire:
|
|
9
|
+
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date:
|
|
12
|
+
date: 2023-02-28 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: hammer_cli
|
|
@@ -17,14 +17,14 @@ dependencies:
|
|
|
17
17
|
requirements:
|
|
18
18
|
- - ">="
|
|
19
19
|
- !ruby/object:Gem::Version
|
|
20
|
-
version: 3.
|
|
20
|
+
version: 3.5.1
|
|
21
21
|
type: :runtime
|
|
22
22
|
prerelease: false
|
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
|
24
24
|
requirements:
|
|
25
25
|
- - ">="
|
|
26
26
|
- !ruby/object:Gem::Version
|
|
27
|
-
version: 3.
|
|
27
|
+
version: 3.5.1
|
|
28
28
|
- !ruby/object:Gem::Dependency
|
|
29
29
|
name: apipie-bindings
|
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -75,19 +75,19 @@ dependencies:
|
|
|
75
75
|
version: 2.2.1
|
|
76
76
|
description: 'Foreman commands for Hammer CLI
|
|
77
77
|
|
|
78
|
-
|
|
78
|
+
'
|
|
79
79
|
email: tstracho@redhat.com
|
|
80
80
|
executables: []
|
|
81
81
|
extensions: []
|
|
82
82
|
extra_rdoc_files:
|
|
83
|
-
- doc/
|
|
84
|
-
- doc/option_builder.md
|
|
85
|
-
- doc/using_hammer_cli_foreman_command.md
|
|
83
|
+
- doc/configuration.md
|
|
86
84
|
- doc/developer_docs.md
|
|
87
85
|
- doc/host_create.md
|
|
86
|
+
- doc/name_id_resolution.md
|
|
87
|
+
- doc/option_builder.md
|
|
88
88
|
- doc/plugin.md
|
|
89
89
|
- doc/testing.md
|
|
90
|
-
- doc/
|
|
90
|
+
- doc/using_hammer_cli_foreman_command.md
|
|
91
91
|
- doc/release_notes.md
|
|
92
92
|
- README.md
|
|
93
93
|
files:
|
|
@@ -106,8 +106,10 @@ files:
|
|
|
106
106
|
- lib/hammer_cli_foreman.rb
|
|
107
107
|
- lib/hammer_cli_foreman/api.rb
|
|
108
108
|
- lib/hammer_cli_foreman/api/authenticator.rb
|
|
109
|
+
- lib/hammer_cli_foreman/api/basic_auth.rb
|
|
109
110
|
- lib/hammer_cli_foreman/api/connection.rb
|
|
110
111
|
- lib/hammer_cli_foreman/api/interactive_basic_auth.rb
|
|
112
|
+
- lib/hammer_cli_foreman/api/interactive_basic_auth_external.rb
|
|
111
113
|
- lib/hammer_cli_foreman/api/negotiate_auth.rb
|
|
112
114
|
- lib/hammer_cli_foreman/api/oauth/authentication_code_grant.rb
|
|
113
115
|
- lib/hammer_cli_foreman/api/oauth/password_grant.rb
|
|
@@ -124,6 +126,7 @@ files:
|
|
|
124
126
|
- lib/hammer_cli_foreman/bookmark.rb
|
|
125
127
|
- lib/hammer_cli_foreman/combination.rb
|
|
126
128
|
- lib/hammer_cli_foreman/command_extensions.rb
|
|
129
|
+
- lib/hammer_cli_foreman/command_extensions/compute_resource_subcommand.rb
|
|
127
130
|
- lib/hammer_cli_foreman/command_extensions/domain.rb
|
|
128
131
|
- lib/hammer_cli_foreman/command_extensions/fields.rb
|
|
129
132
|
- lib/hammer_cli_foreman/command_extensions/hosts.rb
|
|
@@ -143,7 +146,6 @@ files:
|
|
|
143
146
|
- lib/hammer_cli_foreman/compute_resource.rb
|
|
144
147
|
- lib/hammer_cli_foreman/compute_resource/base.rb
|
|
145
148
|
- lib/hammer_cli_foreman/compute_resource/ec2.rb
|
|
146
|
-
- lib/hammer_cli_foreman/compute_resource/gce.rb
|
|
147
149
|
- lib/hammer_cli_foreman/compute_resource/libvirt.rb
|
|
148
150
|
- lib/hammer_cli_foreman/compute_resource/openstack.rb
|
|
149
151
|
- lib/hammer_cli_foreman/compute_resource/ovirt.rb
|
|
@@ -350,7 +352,7 @@ homepage: https://github.com/theforeman/hammer-cli-foreman
|
|
|
350
352
|
licenses:
|
|
351
353
|
- GPL-3.0+
|
|
352
354
|
metadata: {}
|
|
353
|
-
post_install_message:
|
|
355
|
+
post_install_message:
|
|
354
356
|
rdoc_options: []
|
|
355
357
|
require_paths:
|
|
356
358
|
- lib
|
|
@@ -365,8 +367,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
365
367
|
- !ruby/object:Gem::Version
|
|
366
368
|
version: '0'
|
|
367
369
|
requirements: []
|
|
368
|
-
rubygems_version: 3.1.
|
|
369
|
-
signing_key:
|
|
370
|
+
rubygems_version: 3.1.6
|
|
371
|
+
signing_key:
|
|
370
372
|
specification_version: 4
|
|
371
373
|
summary: Foreman commands for Hammer
|
|
372
374
|
test_files:
|
|
@@ -384,106 +386,106 @@ test_files:
|
|
|
384
386
|
- test/data/1.24/foreman_api.json
|
|
385
387
|
- test/data/2.0/foreman_api.json
|
|
386
388
|
- test/data/2.1/foreman_api.json
|
|
387
|
-
- test/data/README.md
|
|
388
389
|
- test/data/2.4/foreman_api.json
|
|
389
390
|
- test/data/2.5/foreman_api.json
|
|
390
391
|
- test/data/3.1/foreman_api.json
|
|
391
392
|
- test/data/3.4/foreman_api.json
|
|
393
|
+
- test/data/README.md
|
|
394
|
+
- test/functional/architecture_test.rb
|
|
395
|
+
- test/functional/associating_commands_test.rb
|
|
396
|
+
- test/functional/audit_test.rb
|
|
392
397
|
- test/functional/auth_source_test.rb
|
|
398
|
+
- test/functional/bookmark_test.rb
|
|
393
399
|
- test/functional/commands/list_test.rb
|
|
394
|
-
- test/functional/hostgroup/create_test.rb
|
|
395
|
-
- test/functional/hostgroup/update_test.rb
|
|
396
|
-
- test/functional/architecture_test.rb
|
|
397
400
|
- test/functional/compute_attribute_test.rb
|
|
398
|
-
- test/functional/ping_test.rb
|
|
399
|
-
- test/functional/user_test.rb
|
|
400
|
-
- test/functional/ssh_keys_test.rb
|
|
401
|
-
- test/functional/subnet/update_test.rb
|
|
402
|
-
- test/functional/subnet/create_test.rb
|
|
403
|
-
- test/functional/test_helper.rb
|
|
404
|
-
- test/functional/location_test.rb
|
|
405
|
-
- test/functional/media_test.rb
|
|
406
|
-
- test/functional/partition_table_test.rb
|
|
407
|
-
- test/functional/personal_access_token_test.rb
|
|
408
|
-
- test/functional/report_template_test.rb
|
|
409
|
-
- test/functional/settings_test.rb
|
|
410
|
-
- test/functional/status_test.rb
|
|
411
|
-
- test/functional/user_mail_notification_test.rb
|
|
412
401
|
- test/functional/compute_profile_test.rb
|
|
413
|
-
- test/functional/realm_test.rb
|
|
414
|
-
- test/functional/usergroup_test.rb
|
|
415
|
-
- test/functional/organization_test.rb
|
|
416
|
-
- test/functional/virtual_machine_test.rb
|
|
417
402
|
- test/functional/compute_resource_test.rb
|
|
418
403
|
- test/functional/domain/create_test.rb
|
|
419
404
|
- test/functional/domain/update_test.rb
|
|
420
405
|
- test/functional/filter_test.rb
|
|
421
406
|
- test/functional/host_test.rb
|
|
407
|
+
- test/functional/hostgroup/create_test.rb
|
|
408
|
+
- test/functional/hostgroup/update_test.rb
|
|
422
409
|
- test/functional/http_proxy_test.rb
|
|
410
|
+
- test/functional/location_test.rb
|
|
423
411
|
- test/functional/mail_notification_test.rb
|
|
424
|
-
- test/functional/
|
|
425
|
-
- test/functional/template_test.rb
|
|
426
|
-
- test/functional/associating_commands_test.rb
|
|
427
|
-
- test/functional/audit_test.rb
|
|
428
|
-
- test/functional/role_test.rb
|
|
429
|
-
- test/functional/bookmark_test.rb
|
|
412
|
+
- test/functional/media_test.rb
|
|
430
413
|
- test/functional/model_test.rb
|
|
414
|
+
- test/functional/operating_system_test.rb
|
|
415
|
+
- test/functional/organization_test.rb
|
|
416
|
+
- test/functional/partition_table_test.rb
|
|
417
|
+
- test/functional/personal_access_token_test.rb
|
|
418
|
+
- test/functional/ping_test.rb
|
|
419
|
+
- test/functional/realm_test.rb
|
|
431
420
|
- test/functional/registration_test.rb
|
|
421
|
+
- test/functional/report_template_test.rb
|
|
422
|
+
- test/functional/role_test.rb
|
|
423
|
+
- test/functional/settings_test.rb
|
|
424
|
+
- test/functional/ssh_keys_test.rb
|
|
425
|
+
- test/functional/status_test.rb
|
|
426
|
+
- test/functional/subnet/create_test.rb
|
|
427
|
+
- test/functional/subnet/update_test.rb
|
|
432
428
|
- test/functional/table_preference_test.rb
|
|
433
|
-
- test/
|
|
434
|
-
- test/
|
|
429
|
+
- test/functional/template_test.rb
|
|
430
|
+
- test/functional/test_helper.rb
|
|
431
|
+
- test/functional/user_mail_notification_test.rb
|
|
432
|
+
- test/functional/user_test.rb
|
|
433
|
+
- test/functional/usergroup_test.rb
|
|
434
|
+
- test/functional/virtual_machine_test.rb
|
|
435
|
+
- test/test_helper.rb
|
|
435
436
|
- test/unit/api/oauth/oauth_authentication_code_grant_test.rb
|
|
436
437
|
- test/unit/api/oauth/oauth_password_grant_test.rb
|
|
437
438
|
- test/unit/api/session_authenticator_wrapper_test.rb
|
|
438
|
-
- test/unit/
|
|
439
|
-
- test/unit/
|
|
439
|
+
- test/unit/api/void_auth_test.rb
|
|
440
|
+
- test/unit/api/interactive_basic_auth_test.rb
|
|
441
|
+
- test/unit/api_test.rb
|
|
442
|
+
- test/unit/apipie_resource_mock.rb
|
|
443
|
+
- test/unit/architecture_test.rb
|
|
444
|
+
- test/unit/audit_test.rb
|
|
445
|
+
- test/unit/auth_source_external.rb
|
|
440
446
|
- test/unit/auth_source_ldap_test.rb
|
|
441
|
-
- test/unit/
|
|
447
|
+
- test/unit/bookmark_test.rb
|
|
448
|
+
- test/unit/commands_test.rb
|
|
449
|
+
- test/unit/common_parameter_test.rb
|
|
450
|
+
- test/unit/compute_profile_test.rb
|
|
442
451
|
- test/unit/compute_resource_test.rb
|
|
452
|
+
- test/unit/config_report_test.rb
|
|
443
453
|
- test/unit/data/test_api.json
|
|
444
454
|
- test/unit/defaults_test.rb
|
|
445
|
-
- test/unit/
|
|
455
|
+
- test/unit/dependency_resolver_test.rb
|
|
456
|
+
- test/unit/domain_test.rb
|
|
457
|
+
- test/unit/exception_handler_test.rb
|
|
446
458
|
- test/unit/external_usergroup_test.rb
|
|
447
459
|
- test/unit/fact_test.rb
|
|
460
|
+
- test/unit/filter_test.rb
|
|
461
|
+
- test/unit/helpers/command.rb
|
|
448
462
|
- test/unit/helpers/fake_searchables.rb
|
|
449
463
|
- test/unit/helpers/resource_disabled.rb
|
|
450
|
-
- test/unit/
|
|
464
|
+
- test/unit/host_test.rb
|
|
465
|
+
- test/unit/hostgroup_test.rb
|
|
466
|
+
- test/unit/id_resolver_test.rb
|
|
451
467
|
- test/unit/image_test.rb
|
|
452
468
|
- test/unit/location_test.rb
|
|
453
|
-
- test/unit/messages_test.rb
|
|
454
469
|
- test/unit/mail_notification_test.rb
|
|
470
|
+
- test/unit/media_test.rb
|
|
471
|
+
- test/unit/messages_test.rb
|
|
472
|
+
- test/unit/model_test.rb
|
|
473
|
+
- test/unit/operating_system_test.rb
|
|
474
|
+
- test/unit/option_builders_test.rb
|
|
455
475
|
- test/unit/option_sources/id_params_test.rb
|
|
456
476
|
- test/unit/option_sources/ids_params_test.rb
|
|
457
477
|
- test/unit/organization_test.rb
|
|
458
478
|
- test/unit/output/formatters_test.rb
|
|
459
|
-
- test/unit/
|
|
479
|
+
- test/unit/param_filters_test.rb
|
|
480
|
+
- test/unit/partition_table_test.rb
|
|
460
481
|
- test/unit/realm_test.rb
|
|
482
|
+
- test/unit/role_test.rb
|
|
483
|
+
- test/unit/sessions_test.rb
|
|
461
484
|
- test/unit/settings_test.rb
|
|
462
|
-
- test/unit/
|
|
485
|
+
- test/unit/smart_proxy_test.rb
|
|
463
486
|
- test/unit/subnet_test.rb
|
|
487
|
+
- test/unit/template_test.rb
|
|
464
488
|
- test/unit/test_helper.rb
|
|
489
|
+
- test/unit/test_output_adapter.rb
|
|
465
490
|
- test/unit/user_test.rb
|
|
466
|
-
- test/unit/
|
|
467
|
-
- test/unit/role_test.rb
|
|
468
|
-
- test/unit/model_test.rb
|
|
469
|
-
- test/unit/operating_system_test.rb
|
|
470
|
-
- test/unit/option_builders_test.rb
|
|
471
|
-
- test/unit/architecture_test.rb
|
|
472
|
-
- test/unit/commands_test.rb
|
|
473
|
-
- test/unit/audit_test.rb
|
|
474
|
-
- test/unit/auth_source_external.rb
|
|
475
|
-
- test/unit/dependency_resolver_test.rb
|
|
476
|
-
- test/unit/exception_handler_test.rb
|
|
477
|
-
- test/unit/filter_test.rb
|
|
478
|
-
- test/unit/media_test.rb
|
|
479
|
-
- test/unit/sessions_test.rb
|
|
480
|
-
- test/unit/bookmark_test.rb
|
|
481
|
-
- test/unit/hostgroup_test.rb
|
|
482
|
-
- test/unit/api_test.rb
|
|
483
|
-
- test/unit/apipie_resource_mock.rb
|
|
484
|
-
- test/unit/compute_profile_test.rb
|
|
485
|
-
- test/unit/partition_table_test.rb
|
|
486
|
-
- test/unit/template_test.rb
|
|
487
|
-
- test/unit/smart_proxy_test.rb
|
|
488
|
-
- test/unit/domain_test.rb
|
|
489
|
-
- test/test_helper.rb
|
|
491
|
+
- test/unit/usergroup_test.rb
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
module HammerCLIForeman
|
|
2
|
-
module ComputeResources
|
|
3
|
-
class GCE < Base
|
|
4
|
-
def name
|
|
5
|
-
'GCE'
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
def compute_attributes
|
|
9
|
-
%w[machine_type network associate_external_ip]
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def interfaces_attrs_name
|
|
13
|
-
'network_interfaces_nics_attributes'
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def volume_attributes
|
|
17
|
-
[
|
|
18
|
-
['size_gb', _('Volume size in GB, integer value')]
|
|
19
|
-
]
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def provider_specific_fields
|
|
23
|
-
[
|
|
24
|
-
Fields::Field.new(:label => _('Project'), :path => [:project]),
|
|
25
|
-
Fields::Field.new(:label => _('Email'), :path => [:email]),
|
|
26
|
-
Fields::Field.new(:label => _('Key Path'), :path => [:key_path]),
|
|
27
|
-
Fields::Field.new(:label => _('Zone'), :path => [:zone])
|
|
28
|
-
]
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def provider_vm_specific_fields
|
|
32
|
-
[
|
|
33
|
-
Fields::Field.new(:label => _('Machine Type'), :path => [:machine_type]),
|
|
34
|
-
Fields::Field.new(:label => _('Status'), :path => [:status]),
|
|
35
|
-
Fields::Field.new(:label => _('Description'), :path => [:description]),
|
|
36
|
-
Fields::Field.new(:label => _('Zone'), :path => [:zone])
|
|
37
|
-
]
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def mandatory_resource_options
|
|
41
|
-
super + %I{project key_path zone}
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
HammerCLIForeman.register_compute_resource('gce', GCE.new)
|
|
46
|
-
end
|
|
47
|
-
end
|