hammer_cli_katello 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/lib/hammer_cli_katello.rb +26 -6
- data/lib/hammer_cli_katello/activation_key.rb +176 -0
- data/lib/hammer_cli_katello/associating_commands.rb +67 -0
- data/lib/hammer_cli_katello/capsule.rb +100 -0
- data/lib/hammer_cli_katello/commands.rb +55 -0
- data/lib/hammer_cli_katello/content_host.rb +90 -0
- data/lib/hammer_cli_katello/content_view.rb +193 -0
- data/lib/hammer_cli_katello/content_view_puppet_module.rb +74 -0
- data/lib/hammer_cli_katello/content_view_version.rb +81 -0
- data/lib/hammer_cli_katello/exception_handler.rb +40 -0
- data/lib/hammer_cli_katello/filter.rb +83 -0
- data/lib/hammer_cli_katello/filter_rule.rb +73 -0
- data/lib/hammer_cli_katello/gpg_key.rb +34 -56
- data/lib/hammer_cli_katello/host_collection.rb +91 -0
- data/lib/hammer_cli_katello/i18n.rb +24 -0
- data/lib/hammer_cli_katello/id_resolver.rb +39 -0
- data/lib/hammer_cli_katello/lifecycle_environment.rb +63 -45
- data/lib/hammer_cli_katello/organization.rb +27 -23
- data/lib/hammer_cli_katello/ping.rb +20 -23
- data/lib/hammer_cli_katello/product.rb +69 -62
- data/lib/hammer_cli_katello/puppet_module.rb +47 -0
- data/lib/hammer_cli_katello/repository.rb +147 -0
- data/lib/hammer_cli_katello/repository_set.rb +88 -0
- data/lib/hammer_cli_katello/subscription.rb +59 -12
- data/lib/hammer_cli_katello/sync_plan.rb +74 -0
- data/lib/hammer_cli_katello/version.rb +1 -1
- data/locale/hammer-cli-katello.pot +1215 -0
- data/locale/zanata.xml +29 -0
- metadata +28 -13
- data/lib/hammer_cli_katello/provider.rb +0 -68
- data/lib/hammer_cli_katello/resource.rb +0 -0
- data/lib/hammer_cli_katello/system.rb +0 -94
- data/lib/hammer_cli_katello/system_group.rb +0 -48
@@ -0,0 +1,47 @@
|
|
1
|
+
module HammerCLIKatello
|
2
|
+
|
3
|
+
class PuppetModule < HammerCLIKatello::Command
|
4
|
+
resource :puppet_modules
|
5
|
+
|
6
|
+
class ListCommand < HammerCLIKatello::ListCommand
|
7
|
+
output do
|
8
|
+
field :id, _("ID")
|
9
|
+
field :name, _("Name")
|
10
|
+
field :version, _("Version")
|
11
|
+
field :author, _("Author")
|
12
|
+
end
|
13
|
+
|
14
|
+
build_options
|
15
|
+
end
|
16
|
+
|
17
|
+
class InfoCommand < HammerCLIKatello::InfoCommand
|
18
|
+
output do
|
19
|
+
field :id, _("ID")
|
20
|
+
field :name, _("Name")
|
21
|
+
field :version, _("Version")
|
22
|
+
field :author, _("Author")
|
23
|
+
|
24
|
+
field :summary, _("Summary")
|
25
|
+
field :description, _("Description")
|
26
|
+
field :license, _("License")
|
27
|
+
field :project_page, _("Project Page")
|
28
|
+
field :source, _("Source")
|
29
|
+
field :dependencies, _("Dependencies"), Fields::List
|
30
|
+
field :checksums, _("Checksums"), Fields::List
|
31
|
+
field :tag_list, _("Tag List"), Fields::List
|
32
|
+
end
|
33
|
+
|
34
|
+
def request_params
|
35
|
+
super.merge(method_options)
|
36
|
+
end
|
37
|
+
|
38
|
+
build_options
|
39
|
+
end
|
40
|
+
|
41
|
+
autoload_subcommands
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
HammerCLI::MainCommand.subcommand "puppet-module",
|
46
|
+
"View Puppet Module details.",
|
47
|
+
HammerCLIKatello::PuppetModule
|
@@ -0,0 +1,147 @@
|
|
1
|
+
module HammerCLIKatello
|
2
|
+
|
3
|
+
class Repository < HammerCLIKatello::Command
|
4
|
+
resource :repositories
|
5
|
+
|
6
|
+
class ListCommand < HammerCLIKatello::ListCommand
|
7
|
+
output do
|
8
|
+
field :id, _("Id")
|
9
|
+
field :name, _("Name")
|
10
|
+
field :content_type, _("Content Type")
|
11
|
+
end
|
12
|
+
|
13
|
+
build_options
|
14
|
+
end
|
15
|
+
|
16
|
+
class InfoCommand < HammerCLIKatello::InfoCommand
|
17
|
+
output do
|
18
|
+
field :id, _("ID")
|
19
|
+
field :name, _("Name")
|
20
|
+
field :label, _("Label")
|
21
|
+
from :organization do
|
22
|
+
field :name, _("Organization")
|
23
|
+
end
|
24
|
+
field :_redhat_repo, _("Red Hat Repository")
|
25
|
+
field :content_type, _("Content Type")
|
26
|
+
field :url, _("URL")
|
27
|
+
field :_publish_via_http, _("Publish Via HTTP")
|
28
|
+
field :full_path, _("Published At")
|
29
|
+
|
30
|
+
label _("Product") do
|
31
|
+
from :product do
|
32
|
+
field :id, _("ID")
|
33
|
+
field :name, _("Name")
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
label _("GPG Key") do
|
38
|
+
from :gpg_key do
|
39
|
+
field :id, _("ID"), Fields::Field, :hide_blank => true
|
40
|
+
field :name, _("Name"), Fields::Field, :hide_blank => true
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
label _("Sync") do
|
45
|
+
field :_sync_state, _("Status")
|
46
|
+
field :last_sync, _("Last Sync Date"), Fields::Date, :hide_blank => true
|
47
|
+
end
|
48
|
+
|
49
|
+
field :created_at, _("Created"), Fields::Date
|
50
|
+
field :updated_at, _("Updated"), Fields::Date
|
51
|
+
|
52
|
+
label _("Content Counts") do
|
53
|
+
field :package_total, _("Packages"), Fields::Field, :hide_blank => true
|
54
|
+
field :package_group_total, _("Package Groups"), Fields::Field, :hide_blank => true
|
55
|
+
field :errata_total, _("Errata"), Fields::Field, :hide_blank => true
|
56
|
+
field :puppet_total, _("Puppet Modules"), Fields::Field, :hide_blank => true
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def send_request
|
61
|
+
super.tap do |data|
|
62
|
+
data["_redhat_repo"] = data["product_type"] == "redhat" ? _("yes") : _("no")
|
63
|
+
data["_publish_via_http"] = data["unprotected"] ? _("yes") : _("no")
|
64
|
+
data["_sync_state"] = get_sync_status(data["sync_state"])
|
65
|
+
setup_content_counts(data)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def setup_content_counts(data)
|
70
|
+
if data["content_type"] == "yum"
|
71
|
+
if data["content_counts"]
|
72
|
+
data["package_total"] = data["content_counts"]["rpm"]
|
73
|
+
data["package_group_total"] = data["content_counts"]["package_group"]
|
74
|
+
data["errata_total"] = data["content_counts"]["erratum"]
|
75
|
+
end
|
76
|
+
data["gpg_key_name"] = data["gpg_key"]["name"] if data["gpg_key"]
|
77
|
+
else
|
78
|
+
data["puppet_total"] = data["content_counts"]["puppet_module"] if data["content_counts"]
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
# rubocop:disable MethodLength
|
83
|
+
def get_sync_status(state)
|
84
|
+
sync_states = {
|
85
|
+
"failed" => _("Failed"),
|
86
|
+
"success" => _("Success"),
|
87
|
+
"finished" => _("Finished"),
|
88
|
+
"error" => _("Error"),
|
89
|
+
"running" => _("Running"),
|
90
|
+
"waiting" => _("Waiting"),
|
91
|
+
"canceled" => _("Canceled"),
|
92
|
+
"not_synced" => _("Not Synced")
|
93
|
+
}
|
94
|
+
sync_states[state]
|
95
|
+
end
|
96
|
+
|
97
|
+
def request_params
|
98
|
+
super.merge(method_options)
|
99
|
+
end
|
100
|
+
|
101
|
+
build_options
|
102
|
+
end
|
103
|
+
|
104
|
+
class SyncCommand < HammerCLIForemanTasks::AsyncCommand
|
105
|
+
action :sync
|
106
|
+
command_name "synchronize"
|
107
|
+
|
108
|
+
success_message _("Repository is being synchronized in task %{id}")
|
109
|
+
failure_message _("Could not synchronize the repository")
|
110
|
+
|
111
|
+
build_options
|
112
|
+
end
|
113
|
+
|
114
|
+
class CreateCommand < HammerCLIKatello::CreateCommand
|
115
|
+
success_message _("Repository created")
|
116
|
+
failure_message _("Could not create the repository")
|
117
|
+
|
118
|
+
option "--publish-via-http", "ENABLE", _("Publish Via HTTP"),
|
119
|
+
:attribute_name => :option_unprotected,
|
120
|
+
:format => HammerCLI::Options::Normalizers::Bool.new
|
121
|
+
|
122
|
+
build_options :without => [:unprotected]
|
123
|
+
end
|
124
|
+
|
125
|
+
class UpdateCommand < HammerCLIKatello::UpdateCommand
|
126
|
+
success_message _("Repository updated")
|
127
|
+
failure_message _("Could not update the repository")
|
128
|
+
|
129
|
+
build_options :without => [:unprotected]
|
130
|
+
option "--publish-via-http", "ENABLE", _("Publish Via HTTP"),
|
131
|
+
:attribute_name => :option_unprotected,
|
132
|
+
:format => HammerCLI::Options::Normalizers::Bool.new
|
133
|
+
end
|
134
|
+
|
135
|
+
class DeleteCommand < HammerCLIKatello::DeleteCommand
|
136
|
+
success_message _("Repository deleted")
|
137
|
+
failure_message _("Could not delete the Repository")
|
138
|
+
|
139
|
+
build_options
|
140
|
+
end
|
141
|
+
|
142
|
+
autoload_subcommands
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
HammerCLI::MainCommand.subcommand "repository", _("Manipulate repositories"),
|
147
|
+
HammerCLIKatello::Repository
|
@@ -0,0 +1,88 @@
|
|
1
|
+
module HammerCLIKatello
|
2
|
+
|
3
|
+
class RepositorySetCommand < HammerCLI::AbstractCommand
|
4
|
+
|
5
|
+
class ListCommand < HammerCLIKatello::ListCommand
|
6
|
+
resource :repository_sets, :index
|
7
|
+
|
8
|
+
output do
|
9
|
+
field :id, _("ID")
|
10
|
+
field :type, _("Type")
|
11
|
+
field :name, _("Name"), nil, :max_width => 300
|
12
|
+
end
|
13
|
+
|
14
|
+
build_options
|
15
|
+
end
|
16
|
+
|
17
|
+
class InfoCommand < HammerCLIKatello::InfoCommand
|
18
|
+
resource :repository_sets, :show
|
19
|
+
|
20
|
+
output do
|
21
|
+
field :id, _("ID")
|
22
|
+
field :name, _("Name")
|
23
|
+
field :type, _("Type")
|
24
|
+
field :contentUrl, _("URL")
|
25
|
+
field :gpgUrl, _("GPG Key")
|
26
|
+
field :label, _("Label")
|
27
|
+
|
28
|
+
collection :repositories, _("Enabled Repositories") do
|
29
|
+
field :id, _("ID")
|
30
|
+
field :name, _("Name")
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
build_options
|
35
|
+
end
|
36
|
+
|
37
|
+
class AvailableRepositoriesCommand < HammerCLIKatello::ListCommand
|
38
|
+
resource :repository_sets, :available_repositories
|
39
|
+
command_name "available-repositories"
|
40
|
+
|
41
|
+
output do
|
42
|
+
field :repo_name, _("Name")
|
43
|
+
from :substitutions do
|
44
|
+
field :basearch, _("Arch")
|
45
|
+
field :releasever, _("Release")
|
46
|
+
end
|
47
|
+
field :enabled, _("Enabled"), Fields::Boolean
|
48
|
+
end
|
49
|
+
|
50
|
+
# We need to define +custom_option_builders+ and +request_params+ to
|
51
|
+
# be able to resolve the --name to --id for repository set
|
52
|
+
def self.custom_option_builders
|
53
|
+
super + [HammerCLIForeman::SearchablesOptionBuilder.new(resource, searchables)]
|
54
|
+
end
|
55
|
+
|
56
|
+
def request_params
|
57
|
+
super.update('id' => get_identifier)
|
58
|
+
end
|
59
|
+
|
60
|
+
build_options
|
61
|
+
end
|
62
|
+
|
63
|
+
class EnableCommand < HammerCLIKatello::UpdateCommand
|
64
|
+
resource :repository_sets, :enable
|
65
|
+
command_name "enable"
|
66
|
+
|
67
|
+
success_message _("Repository enabled")
|
68
|
+
failure_message _("Could not enable repository")
|
69
|
+
|
70
|
+
build_options
|
71
|
+
end
|
72
|
+
|
73
|
+
class DisableCommand < HammerCLIKatello::UpdateCommand
|
74
|
+
resource :repository_sets, :disable
|
75
|
+
command_name "disable"
|
76
|
+
|
77
|
+
success_message _("Repository disabled")
|
78
|
+
failure_message _("Could not disable repository")
|
79
|
+
|
80
|
+
build_options
|
81
|
+
end
|
82
|
+
|
83
|
+
autoload_subcommands
|
84
|
+
end
|
85
|
+
|
86
|
+
HammerCLI::MainCommand.subcommand("repository-set", _("manipulate repository sets on the server"),
|
87
|
+
HammerCLIKatello::RepositorySetCommand)
|
88
|
+
end
|
@@ -1,23 +1,37 @@
|
|
1
1
|
require 'hammer_cli'
|
2
|
-
require 'katello_api'
|
3
2
|
require 'hammer_cli_foreman'
|
4
3
|
require 'hammer_cli_foreman/commands'
|
5
4
|
|
6
5
|
module HammerCLIKatello
|
7
6
|
|
8
7
|
class SubscriptionCommand < HammerCLI::AbstractCommand
|
9
|
-
class ListCommand <
|
10
|
-
resource
|
8
|
+
class ListCommand < HammerCLIKatello::ListCommand
|
9
|
+
resource :subscriptions, :index
|
11
10
|
|
12
11
|
output do
|
13
|
-
field :
|
12
|
+
field :product_name, _("Name")
|
13
|
+
field :contract_number, _("Contract")
|
14
|
+
field :account_number, _("Account")
|
15
|
+
field :support_level, _("Support")
|
16
|
+
field :quantity, _("Quantity")
|
17
|
+
field :consumed, _("Consumed")
|
18
|
+
field :end_date, _("End Date")
|
19
|
+
field :id, _("ID")
|
20
|
+
field :product_name, _("Product")
|
21
|
+
field :format_quantity, _("Quantity")
|
22
|
+
field :consumed, _("Attached")
|
14
23
|
end
|
15
24
|
|
16
|
-
|
25
|
+
def extend_data(data)
|
26
|
+
data["format_quantity"] = data["quantity"] == -1 ? _("Unlimited") : data["quantity"]
|
27
|
+
data
|
28
|
+
end
|
29
|
+
|
30
|
+
build_options
|
17
31
|
end
|
18
32
|
|
19
|
-
class UploadCommand <
|
20
|
-
resource
|
33
|
+
class UploadCommand < HammerCLIForemanTasks::AsyncCommand
|
34
|
+
resource :subscriptions, :upload
|
21
35
|
command_name "upload"
|
22
36
|
|
23
37
|
class BinaryFile < HammerCLI::Options::Normalizers::File
|
@@ -30,18 +44,51 @@ module HammerCLIKatello
|
|
30
44
|
{:content_type => 'multipart/form-data', :multipart => true}
|
31
45
|
end
|
32
46
|
|
33
|
-
success_message "Manifest is being uploaded"
|
34
|
-
failure_message "Manifest upload failed"
|
47
|
+
success_message _("Manifest is being uploaded in task %{id}")
|
48
|
+
failure_message _("Manifest upload failed")
|
35
49
|
|
36
|
-
|
37
|
-
option "--file", "MANIFEST", "Subscription manifest file",
|
50
|
+
build_options :without => [:content]
|
51
|
+
option "--file", "MANIFEST", _("Subscription manifest file"),
|
38
52
|
:attribute_name => :option_content,
|
39
53
|
:required => true, :format => BinaryFile.new
|
40
54
|
end
|
41
55
|
|
56
|
+
class DeleteManfiestCommand < HammerCLIForemanTasks::AsyncCommand
|
57
|
+
resource :subscriptions, :delete_manifest
|
58
|
+
command_name "delete-manifest"
|
59
|
+
|
60
|
+
success_message _("Manifest is being deleted in task %{id}")
|
61
|
+
failure_message _("Manifest deletion failed")
|
62
|
+
|
63
|
+
build_options
|
64
|
+
end
|
65
|
+
|
66
|
+
class RefreshManfiestCommand < HammerCLIForemanTasks::AsyncCommand
|
67
|
+
resource :subscriptions, :refresh_manifest
|
68
|
+
command_name "refresh-manifest"
|
69
|
+
|
70
|
+
success_message _("Manifest is being refreshed in task %{id}")
|
71
|
+
failure_message _("Manifest refresh failed")
|
72
|
+
|
73
|
+
build_options
|
74
|
+
end
|
75
|
+
|
76
|
+
class ManifestHistoryCommand < HammerCLIKatello::ListCommand
|
77
|
+
command_name "manifest-history"
|
78
|
+
resource :subscriptions, :manifest_history
|
79
|
+
|
80
|
+
output do
|
81
|
+
field :status, _("Status")
|
82
|
+
field :statusMessage, _("Status Message")
|
83
|
+
field :created, _("Time"), Fields::Date
|
84
|
+
end
|
85
|
+
|
86
|
+
build_options
|
87
|
+
end
|
88
|
+
|
42
89
|
autoload_subcommands
|
43
90
|
end
|
44
91
|
end
|
45
92
|
|
46
|
-
HammerCLI::MainCommand.subcommand("subscription", "Manipulate subscriptions.",
|
93
|
+
HammerCLI::MainCommand.subcommand("subscription", _("Manipulate subscriptions."),
|
47
94
|
HammerCLIKatello::SubscriptionCommand)
|
@@ -0,0 +1,74 @@
|
|
1
|
+
module HammerCLIKatello
|
2
|
+
class SyncPlan < HammerCLIKatello::Command
|
3
|
+
resource :sync_plans
|
4
|
+
|
5
|
+
class ListCommand < HammerCLIKatello::ListCommand
|
6
|
+
|
7
|
+
output do
|
8
|
+
field :id, _("ID")
|
9
|
+
field :name, _("Name")
|
10
|
+
field :sync_date, _("Start Date"), Fields::Date
|
11
|
+
field :interval, _("Interval")
|
12
|
+
end
|
13
|
+
|
14
|
+
build_options
|
15
|
+
end
|
16
|
+
|
17
|
+
class InfoCommand < HammerCLIKatello::InfoCommand
|
18
|
+
|
19
|
+
output ListCommand.output_definition do
|
20
|
+
field :description, _("Description")
|
21
|
+
field :created_at, _("Created at"), Fields::Date
|
22
|
+
field :updated_at, _("Updated at"), Fields::Date
|
23
|
+
end
|
24
|
+
|
25
|
+
build_options
|
26
|
+
end
|
27
|
+
|
28
|
+
class CreateCommand < HammerCLIKatello::CreateCommand
|
29
|
+
|
30
|
+
option "--interval", "INTERVAL", _("how often synchronization should run"),
|
31
|
+
:default => 'none',
|
32
|
+
:format => HammerCLI::Options::Normalizers::Enum.new(
|
33
|
+
%w(none hourly daily weekly)
|
34
|
+
)
|
35
|
+
|
36
|
+
option "--sync-date", "SYNC_DATE",
|
37
|
+
_("start date and time of the synchronization defaults to now"),
|
38
|
+
:format => HammerCLI::Options::Normalizers::DateTime.new,
|
39
|
+
:default => DateTime.now.strftime("%F %T")
|
40
|
+
|
41
|
+
success_message _("Sync plan created")
|
42
|
+
failure_message _("Could not create the sync plan")
|
43
|
+
|
44
|
+
build_options :without => [:interval, :sync_date]
|
45
|
+
end
|
46
|
+
|
47
|
+
class UpdateCommand < HammerCLIKatello::UpdateCommand
|
48
|
+
|
49
|
+
option "--interval", "INTERVAL", _("how often synchronization should run"),
|
50
|
+
:format => HammerCLI::Options::Normalizers::Enum.new(
|
51
|
+
%w(none hourly daily weekly)
|
52
|
+
)
|
53
|
+
option "--sync-date", "SYNC_DATE", _("start date and time of the synchronization"),
|
54
|
+
:format => HammerCLI::Options::Normalizers::DateTime.new
|
55
|
+
|
56
|
+
success_message _("Sync plan updated")
|
57
|
+
failure_message _("Could not update the sync plan")
|
58
|
+
|
59
|
+
build_options :without => [:interval, :sync_date]
|
60
|
+
end
|
61
|
+
|
62
|
+
class DeleteCommand < HammerCLIKatello::DeleteCommand
|
63
|
+
success_message _("Sync plan destroyed")
|
64
|
+
failure_message _("Could not destroy the sync plan")
|
65
|
+
|
66
|
+
build_options
|
67
|
+
end
|
68
|
+
|
69
|
+
autoload_subcommands
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
HammerCLI::MainCommand.subcommand 'sync-plan', _("Manipulate sync plans"),
|
74
|
+
HammerCLIKatello::SyncPlan
|