dtk-client 0.9.1 → 0.10.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +4 -0
- data/Gemfile +1 -3
- data/README.md +2 -121
- data/Rakefile +44 -0
- data/bin/dtk +10 -88
- data/dtk-client.gemspec +21 -44
- data/examples/simple/dtk.module.yaml +32 -0
- data/{lib/git-logs/git.log → examples/simple/test/README.md} +0 -0
- data/examples/spark/dtk.module.yaml +120 -0
- data/examples/with_repo_content/deploy/puppet/manifests/hostname.pp +54 -0
- data/examples/with_repo_content/dtk.module.yaml +49 -0
- data/examples/with_repo_content/test/README.txt +0 -0
- data/features/dtk.feature +8 -0
- data/features/step_definitions/dtk_steps.rb +6 -0
- data/features/support/env.rb +15 -0
- data/lib/cli/command/mixin.rb +101 -0
- data/lib/cli/command/module/clone.rb +42 -0
- data/lib/cli/command/module/install.rb +52 -0
- data/lib/cli/command/module/list.rb +31 -0
- data/lib/cli/command/module/list_assemblies.rb +39 -0
- data/lib/cli/command/module/push.rb +34 -0
- data/lib/cli/command/module/uninstall.rb +46 -0
- data/lib/cli/command/module.rb +33 -0
- data/lib/cli/command/options.rb +33 -0
- data/lib/cli/command/service/cancel_task.rb +33 -0
- data/lib/cli/command/service/converge.rb +37 -0
- data/lib/{parser/adapters/thor/common_option_defs.rb → cli/command/service/create_workspace.rb} +13 -17
- data/lib/cli/command/service/destroy.rb +47 -0
- data/lib/cli/command/service/edit.rb +47 -0
- data/lib/cli/command/service/exec.rb +42 -0
- data/lib/cli/command/service/exec_sync.rb +53 -0
- data/lib/cli/command/service/list.rb +30 -0
- data/lib/cli/command/service/list_actions.rb +39 -0
- data/lib/cli/command/service/list_attributes.rb +44 -0
- data/lib/cli/command/service/list_component_links.rb +33 -0
- data/lib/cli/command/service/list_components.rb +39 -0
- data/lib/cli/command/service/list_dependent_modules.rb +33 -0
- data/lib/cli/command/service/list_nodes.rb +33 -0
- data/lib/cli/command/service/list_violations.rb +33 -0
- data/lib/cli/command/service/pull.rb +32 -0
- data/lib/cli/command/service/push.rb +37 -0
- data/lib/{shell/parse_monkey_patch.rb → cli/command/service/set_default_target.rb} +9 -17
- data/lib/cli/command/service/set_required_attributes.rb +32 -0
- data/lib/cli/command/service/ssh.rb +42 -0
- data/lib/cli/command/service/stage.rb +55 -0
- data/lib/cli/command/service/start.rb +33 -0
- data/lib/{shell/context_aux.rb → cli/command/service/stop.rb} +10 -23
- data/lib/cli/command/service/task_status.rb +39 -0
- data/lib/cli/command/service.rb +55 -0
- data/lib/{commands.rb → cli/command/subcommand.rb} +22 -25
- data/lib/{bundler_monkey_patch.rb → cli/command/token/arg.rb} +6 -6
- data/lib/cli/command/token/class_mixin.rb +96 -0
- data/lib/cli/command/token/flag.rb +42 -0
- data/lib/{execute/command/rest_call.rb → cli/command/token/mixin.rb} +23 -14
- data/lib/cli/command/token/switch.rb +35 -0
- data/lib/cli/command/token.rb +76 -0
- data/lib/cli/command.rb +46 -0
- data/lib/cli/context/attributes.rb +50 -0
- data/lib/cli/context/type/module.rb +34 -0
- data/lib/{commands/thor/state_change.rb → cli/context/type/service.rb} +11 -5
- data/lib/cli/context/type/top.rb +32 -0
- data/lib/cli/context/type.rb +42 -0
- data/lib/cli/context.rb +174 -0
- data/lib/cli/directory_parser/file_system.rb +105 -0
- data/lib/{execute/command.rb → cli/directory_parser.rb} +14 -17
- data/lib/{execute.rb → cli/file_obj.rb} +13 -9
- data/lib/cli/processor/plugin/gli.rb +70 -0
- data/lib/cli/processor.rb +60 -0
- data/lib/cli/runner/dtkn_access.rb +75 -0
- data/lib/cli/runner.rb +58 -0
- data/lib/cli/version.rb +8 -0
- data/lib/{config → client/config}/cacert.pem +0 -0
- data/lib/client/config/default.conf +20 -0
- data/lib/client/config.rb +106 -0
- data/lib/client/configurator.rb +182 -0
- data/lib/client/conn.rb +197 -0
- data/lib/client/content_generator.rb +127 -0
- data/lib/client/error/subclasses.rb +105 -0
- data/lib/client/error.rb +98 -0
- data/lib/client/git_repo/adapter/git_gem/error_handler.rb +70 -0
- data/lib/client/git_repo/adapter/git_gem.rb +179 -0
- data/lib/client/git_repo.rb +122 -0
- data/lib/client/logger.rb +136 -0
- data/lib/client/operation/account.rb +66 -0
- data/lib/client/operation/client_module_dir/git_repo.rb +286 -0
- data/lib/client/operation/client_module_dir.rb +138 -0
- data/lib/client/operation/module/clone_module.rb +52 -0
- data/lib/client/operation/module/install/common_module.rb +58 -0
- data/lib/client/operation/module/install/external_module.rb +122 -0
- data/lib/client/operation/module/install.rb +91 -0
- data/lib/client/operation/module/install_from_catalog.rb +76 -0
- data/lib/client/operation/module/list.rb +34 -0
- data/lib/client/operation/module/list_assemblies.rb +35 -0
- data/lib/client/operation/module/push.rb +62 -0
- data/lib/client/operation/module/uninstall.rb +44 -0
- data/lib/client/operation/module.rb +58 -0
- data/lib/{commands/common/thor/reparse.rb → client/operation/module_service_common.rb} +27 -16
- data/lib/client/operation/service/cancel_task.rb +29 -0
- data/lib/client/operation/service/commit_and_push.rb +128 -0
- data/lib/client/operation/service/converge.rb +50 -0
- data/lib/{util/common_util.rb → client/operation/service/create_workspace.rb} +13 -13
- data/lib/client/operation/service/destroy.rb +42 -0
- data/lib/client/operation/service/edit.rb +54 -0
- data/lib/client/operation/service/exec.rb +73 -0
- data/lib/client/operation/service/list.rb +32 -0
- data/lib/client/operation/service/list_actions.rb +34 -0
- data/lib/{commands/thor/dependency.rb → client/operation/service/list_attributes.rb} +16 -12
- data/lib/client/operation/service/list_component_links.rb +29 -0
- data/lib/{commands/common/thor/pull_clone_changes.rb → client/operation/service/list_components.rb} +13 -7
- data/lib/client/operation/service/list_dependent_modules.rb +29 -0
- data/lib/client/operation/service/list_nodes.rb +29 -0
- data/lib/{commands/thor/project.rb → client/operation/service/list_violations.rb} +8 -13
- data/lib/client/operation/service/pull.rb +37 -0
- data/lib/client/operation/service/set_default_target.rb +31 -0
- data/lib/client/operation/service/set_required_attributes.rb +41 -0
- data/lib/client/operation/service/ssh.rb +118 -0
- data/lib/client/operation/service/stage.rb +54 -0
- data/lib/client/operation/service/start.rb +29 -0
- data/lib/client/operation/service/stop.rb +30 -0
- data/lib/{task_status → client/operation/service/task_status}/refresh_mode.rb +15 -25
- data/lib/{task_status → client/operation/service/task_status}/snapshot_mode.rb +4 -5
- data/lib/{task_status → client/operation/service/task_status}/stream_mode/element/format.rb +1 -1
- data/lib/{task_status → client/operation/service/task_status}/stream_mode/element/hierarchical_task/result/action.rb +1 -1
- data/lib/{task_status → client/operation/service/task_status}/stream_mode/element/hierarchical_task/result/components.rb +1 -1
- data/lib/{task_status → client/operation/service/task_status}/stream_mode/element/hierarchical_task/result/node_level.rb +1 -1
- data/lib/{task_status → client/operation/service/task_status}/stream_mode/element/hierarchical_task/result.rb +4 -4
- data/lib/{task_status → client/operation/service/task_status}/stream_mode/element/hierarchical_task/steps/action.rb +1 -1
- data/lib/{task_status → client/operation/service/task_status}/stream_mode/element/hierarchical_task/steps/components.rb +1 -1
- data/lib/{task_status → client/operation/service/task_status}/stream_mode/element/hierarchical_task/steps/node_level.rb +1 -1
- data/lib/{task_status → client/operation/service/task_status}/stream_mode/element/hierarchical_task/steps.rb +4 -4
- data/lib/{task_status → client/operation/service/task_status}/stream_mode/element/hierarchical_task.rb +3 -3
- data/lib/{task_status → client/operation/service/task_status}/stream_mode/element/no_results.rb +1 -1
- data/lib/{task_status → client/operation/service/task_status}/stream_mode/element/render.rb +1 -1
- data/lib/{task_status → client/operation/service/task_status}/stream_mode/element/stage/render.rb +1 -1
- data/lib/{task_status → client/operation/service/task_status}/stream_mode/element/stage.rb +3 -3
- data/lib/{task_status → client/operation/service/task_status}/stream_mode/element/task_end.rb +1 -1
- data/lib/{task_status → client/operation/service/task_status}/stream_mode/element/task_start.rb +1 -1
- data/lib/{task_status → client/operation/service/task_status}/stream_mode/element.rb +13 -13
- data/lib/{task_status → client/operation/service/task_status}/stream_mode.rb +5 -9
- data/lib/client/operation/service/task_status.rb +77 -0
- data/lib/client/operation/service.rb +54 -0
- data/lib/client/operation.rb +67 -0
- data/lib/client/operation_args.rb +40 -0
- data/lib/{execute/execute_context/result_store.rb → client/render/view/simple.rb} +15 -14
- data/lib/client/render/view/table/processor.rb +248 -0
- data/lib/client/render/view/table.rb +75 -0
- data/lib/client/render.rb +113 -0
- data/lib/client/response/error_handler.rb +97 -0
- data/lib/client/response/render_helper.rb +78 -0
- data/lib/client/response/subclasses.rb +62 -0
- data/lib/client/response.rb +83 -0
- data/lib/client/session.rb +62 -0
- data/lib/client/util/auxiliary.rb +34 -0
- data/lib/client/util/console.rb +81 -0
- data/lib/client/util/disk_cacher.rb +66 -0
- data/lib/client/util/dtk_path.rb +28 -0
- data/lib/{search_hash.rb → client/util/hash_with_optional_keys.rb} +29 -21
- data/lib/client/util/interactive_wizard.rb +84 -0
- data/lib/client/util/module_ref.rb +92 -0
- data/lib/client/util/os_util/print.rb +121 -0
- data/lib/client/util/os_util.rb +122 -0
- data/lib/{commands/thor/utils.rb → client/util/post_body.rb} +1 -1
- data/lib/{execute/error_usage.rb → client/util/query_string_hash.rb} +2 -2
- data/lib/client/util/remote_dependency.rb +67 -0
- data/lib/client/util/ssh_util.rb +89 -0
- data/lib/client/util/validation.rb +28 -0
- data/lib/client/util.rb +18 -0
- data/lib/{util/permission_util.rb → dtk_cli.rb} +10 -9
- data/lib/dtk_client.rb +18 -14
- data/test/default_test.rb +14 -0
- data/test/test_helper.rb +9 -0
- metadata +196 -307
- data/Gemfile_dev +0 -13
- data/bin/dtk-execute +0 -32
- data/bin/dtk-shell +0 -31
- data/lib/auxiliary.rb +0 -61
- data/lib/client.rb +0 -58
- data/lib/command_helper.rb +0 -33
- data/lib/command_helpers/git_repo/merge.rb +0 -153
- data/lib/command_helpers/git_repo.rb +0 -589
- data/lib/command_helpers/jenkins_client/config_xml.rb +0 -288
- data/lib/command_helpers/jenkins_client.rb +0 -106
- data/lib/command_helpers/service_importer.rb +0 -251
- data/lib/command_helpers/service_link.rb +0 -33
- data/lib/command_helpers/test_module_creator.rb +0 -69
- data/lib/command_helpers/test_module_templates/dtk.model.yaml.eruby +0 -10
- data/lib/command_helpers/test_module_templates/spec_helper.rb.eruby +0 -10
- data/lib/command_helpers/test_module_templates/temp_component_spec.rb.eruby +0 -5
- data/lib/commands/common/thor/access_control.rb +0 -133
- data/lib/commands/common/thor/action_result_handler.rb +0 -74
- data/lib/commands/common/thor/assembly_template.rb +0 -92
- data/lib/commands/common/thor/assembly_workspace.rb +0 -1638
- data/lib/commands/common/thor/base_command_helper.rb +0 -59
- data/lib/commands/common/thor/clone.rb +0 -82
- data/lib/commands/common/thor/common.rb +0 -88
- data/lib/commands/common/thor/common_base.rb +0 -49
- data/lib/commands/common/thor/create_target.rb +0 -70
- data/lib/commands/common/thor/edit.rb +0 -255
- data/lib/commands/common/thor/inventory_parser.rb +0 -98
- data/lib/commands/common/thor/list_diffs.rb +0 -128
- data/lib/commands/common/thor/module/import.rb +0 -215
- data/lib/commands/common/thor/module.rb +0 -1011
- data/lib/commands/common/thor/node.rb +0 -53
- data/lib/commands/common/thor/poller.rb +0 -65
- data/lib/commands/common/thor/pull_from_remote.rb +0 -152
- data/lib/commands/common/thor/puppet_forge.rb +0 -72
- data/lib/commands/common/thor/purge_clone.rb +0 -101
- data/lib/commands/common/thor/push_clone_changes.rb +0 -162
- data/lib/commands/common/thor/push_to_remote.rb +0 -94
- data/lib/commands/common/thor/remotes.rb +0 -71
- data/lib/commands/common/thor/set_required_attributes.rb +0 -46
- data/lib/commands/thor/account.rb +0 -239
- data/lib/commands/thor/assembly.rb +0 -361
- data/lib/commands/thor/attribute.rb +0 -79
- data/lib/commands/thor/component.rb +0 -70
- data/lib/commands/thor/component_module.rb +0 -501
- data/lib/commands/thor/component_template.rb +0 -174
- data/lib/commands/thor/developer.rb +0 -144
- data/lib/commands/thor/dtk.rb +0 -152
- data/lib/commands/thor/library.rb +0 -125
- data/lib/commands/thor/node.rb +0 -504
- data/lib/commands/thor/node_group.rb +0 -203
- data/lib/commands/thor/node_template.rb +0 -94
- data/lib/commands/thor/provider.rb +0 -233
- data/lib/commands/thor/remotes.rb +0 -49
- data/lib/commands/thor/service.rb +0 -932
- data/lib/commands/thor/service_module.rb +0 -900
- data/lib/commands/thor/target.rb +0 -250
- data/lib/commands/thor/task.rb +0 -116
- data/lib/commands/thor/test_module.rb +0 -310
- data/lib/commands/thor/workspace.rb +0 -698
- data/lib/config/client.conf.header +0 -20
- data/lib/config/configuration.rb +0 -99
- data/lib/config/default.conf +0 -16
- data/lib/config/disk_cacher.rb +0 -80
- data/lib/configurator.rb +0 -176
- data/lib/context_router.rb +0 -44
- data/lib/core.rb +0 -489
- data/lib/domain/git_adapter.rb +0 -412
- data/lib/domain/git_error_handler.rb +0 -64
- data/lib/domain/response/error_handler.rb +0 -86
- data/lib/domain/response.rb +0 -285
- data/lib/dtk-client/version.rb +0 -20
- data/lib/dtk_constants.rb +0 -40
- data/lib/dtk_error.rb +0 -114
- data/lib/dtk_logger.rb +0 -113
- data/lib/error.rb +0 -85
- data/lib/execute/cli_pure/cli_rerouter.rb +0 -102
- data/lib/execute/command/api_call/map.rb +0 -60
- data/lib/execute/command/api_call/service.rb +0 -91
- data/lib/execute/command/api_call/translation_term.rb +0 -119
- data/lib/execute/command/api_call.rb +0 -60
- data/lib/execute/command_processor/rest_call.rb +0 -59
- data/lib/execute/command_processor.rb +0 -30
- data/lib/execute/execute_context.rb +0 -86
- data/lib/execute/script/add_tenant.rb +0 -121
- data/lib/execute/script.rb +0 -64
- data/lib/parser/adapters/option_parser.rb +0 -70
- data/lib/parser/adapters/thor.rb +0 -555
- data/lib/require_first.rb +0 -104
- data/lib/shell/context.rb +0 -1064
- data/lib/shell/domain/active_context.rb +0 -186
- data/lib/shell/domain/context_entity.rb +0 -89
- data/lib/shell/domain/context_params.rb +0 -223
- data/lib/shell/domain/override_tasks.rb +0 -88
- data/lib/shell/domain/shadow_entity.rb +0 -76
- data/lib/shell/header_shell.rb +0 -44
- data/lib/shell/help_monkey_patch.rb +0 -283
- data/lib/shell/interactive_wizard.rb +0 -256
- data/lib/shell/message_queue.rb +0 -63
- data/lib/shell/status_monitor.rb +0 -124
- data/lib/shell.rb +0 -261
- data/lib/task_status.rb +0 -83
- data/lib/util/console.rb +0 -235
- data/lib/util/dtk_puppet.rb +0 -65
- data/lib/util/module_util.rb +0 -66
- data/lib/util/os_util.rb +0 -385
- data/lib/util/remote_dependency_util.rb +0 -84
- data/lib/util/ssh_util.rb +0 -94
- data/lib/view_processor/augmented_simple_list.rb +0 -44
- data/lib/view_processor/hash_pretty_print.rb +0 -123
- data/lib/view_processor/simple_list.rb +0 -156
- data/lib/view_processor/table_print.rb +0 -309
- data/lib/view_processor.rb +0 -129
- data/puppet/manifests/init.pp +0 -72
- data/puppet/manifests/params.pp +0 -16
- data/puppet/r8meta.puppet.yml +0 -35
- data/puppet/templates/bash_profile.erb +0 -2
- data/puppet/templates/client.conf.erb +0 -1
- data/puppet/templates/dtkclient.erb +0 -2
- data/spec/component_module_spec.rb +0 -34
- data/spec/dependency_spec.rb +0 -6
- data/spec/dtk_shell_spec.rb +0 -13
- data/spec/dtk_spec.rb +0 -33
- data/spec/lib/spec_helper.rb +0 -10
- data/spec/lib/spec_thor.rb +0 -108
- data/spec/node_template_spec.rb +0 -24
- data/spec/project_spec.rb +0 -6
- data/spec/repo_spec.rb +0 -7
- data/spec/response_spec.rb +0 -52
- data/spec/service_module_spec.rb +0 -38
- data/spec/service_spec.rb +0 -50
- data/spec/state_change_spec.rb +0 -7
- data/spec/table_print_spec.rb +0 -48
- data/spec/target_spec.rb +0 -57
- data/spec/task_spec.rb +0 -28
- data/views/assembly/augmented_simple_list.rb +0 -12
- data/views/assembly_template/augmented_simple_list.rb +0 -12
- data/views/list_task/augmented_simple_list.rb +0 -12
@@ -1,94 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Copyright (C) 2010-2016 dtk contributors
|
3
|
-
#
|
4
|
-
# This file is part of the dtk project.
|
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
|
-
dtk_require_common_commands('thor/common')
|
19
|
-
dtk_require("../../../domain/git_adapter")
|
20
|
-
|
21
|
-
|
22
|
-
module DTK::Client
|
23
|
-
module PushToRemoteMixin
|
24
|
-
|
25
|
-
NO_PUSH_CHANGES_MSG = "There are no changes to push"
|
26
|
-
|
27
|
-
def push_to_git_remote_aux(full_module_name, module_type, version, opts, force = false)
|
28
|
-
opts.merge!(:force => force)
|
29
|
-
|
30
|
-
response = Helper(:git_repo).push_changes(module_type, full_module_name, version, opts)
|
31
|
-
|
32
|
-
return response unless response.ok?
|
33
|
-
if response.data(:diffs) && !response.data(:diffs)[:are_there_changes]
|
34
|
-
raise DtkError, NO_PUSH_CHANGES_MSG
|
35
|
-
end
|
36
|
-
|
37
|
-
Response::Ok.new()
|
38
|
-
end
|
39
|
-
|
40
|
-
def push_to_git_remote_location_aux(full_module_name, module_type, version, opts, force = false)
|
41
|
-
opts.merge!(:force => force)
|
42
|
-
|
43
|
-
# staging dir which will be removed
|
44
|
-
temp_stage_dir = OsUtil.temp_git_remote_location()
|
45
|
-
content_dir = File::join(temp_stage_dir, opts[:remote_repo_location])
|
46
|
-
|
47
|
-
begin
|
48
|
-
# clone desired repo
|
49
|
-
::DTK::Client::GitAdapter.clone(opts[:remote_repo_url], temp_stage_dir, opts[:remote_branch])
|
50
|
-
# make sure that content dir exist
|
51
|
-
FileUtils.mkdir_p(content_dir)
|
52
|
-
# copy content of module to new dir (overriding everything in process)
|
53
|
-
module_location = OsUtil.module_location(module_type, full_module_name, version)
|
54
|
-
FileUtils.cp_r(File.join(module_location, '/.'), content_dir)
|
55
|
-
# remove git folder
|
56
|
-
FileUtils.rm_rf(File.join(content_dir, '.git'))
|
57
|
-
# now we push it
|
58
|
-
opts.merge!(:override_repo_dir_location => temp_stage_dir)
|
59
|
-
response = Helper(:git_repo).push_changes(module_type, full_module_name, version, opts)
|
60
|
-
return response unless response.ok?
|
61
|
-
|
62
|
-
if response.data(:diffs) && !response.data(:diffs)[:are_there_changes]
|
63
|
-
raise DtkError, NO_PUSH_CHANGES_MSG
|
64
|
-
end
|
65
|
-
|
66
|
-
Response::Ok.new()
|
67
|
-
ensure
|
68
|
-
FileUtils.rm_rf(temp_stage_dir)
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
def push_to_remote_aux(remote_module_info, module_type, force = false)
|
73
|
-
full_module_name = remote_module_info.data(:full_module_name)
|
74
|
-
version = remote_module_info.data(:version)
|
75
|
-
|
76
|
-
opts = {
|
77
|
-
:remote_repo_url => remote_module_info.data(:remote_repo_url),
|
78
|
-
:remote_repo => remote_module_info.data(:remote_repo),
|
79
|
-
:remote_branch => remote_module_info.data(:remote_branch),
|
80
|
-
:local_branch => remote_module_info.data(:workspace_branch),
|
81
|
-
:where => 'catalog',
|
82
|
-
:force => force
|
83
|
-
}
|
84
|
-
response = Helper(:git_repo).push_changes(module_type, full_module_name, version, opts)
|
85
|
-
return response unless response.ok?
|
86
|
-
if response.data(:diffs) && !response.data(:diffs)[:are_there_changes]
|
87
|
-
raise DtkError, NO_PUSH_CHANGES_MSG
|
88
|
-
end
|
89
|
-
|
90
|
-
Response::Ok.new()
|
91
|
-
end
|
92
|
-
|
93
|
-
end
|
94
|
-
end
|
@@ -1,71 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Copyright (C) 2010-2016 dtk contributors
|
3
|
-
#
|
4
|
-
# This file is part of the dtk project.
|
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
|
-
module DTK::Client
|
20
|
-
module RemotesMixin
|
21
|
-
|
22
|
-
def remote_remove_aux(context_params)
|
23
|
-
module_id, remote_name = context_params.retrieve_arguments([::DTK::Client::ModuleMixin::REQ_MODULE_ID,:option_1!], method_argument_names)
|
24
|
-
module_type = get_module_type(context_params)
|
25
|
-
|
26
|
-
unless options.force
|
27
|
-
return unless Console.confirmation_prompt("Are you sure you want to remove '#{remote_name}'?")
|
28
|
-
end
|
29
|
-
|
30
|
-
post_body = {
|
31
|
-
"#{module_type}_id".to_sym => module_id,
|
32
|
-
:remote_name => remote_name
|
33
|
-
}
|
34
|
-
|
35
|
-
response = post rest_url("#{module_type}/remove_git_remote"), post_body
|
36
|
-
return response unless response.ok?
|
37
|
-
OsUtil.print("Successfully removed remote '#{remote_name}'", :green)
|
38
|
-
nil
|
39
|
-
end
|
40
|
-
|
41
|
-
def remote_add_aux(context_params)
|
42
|
-
module_id, remote_name, remote_url = context_params.retrieve_arguments([::DTK::Client::ModuleMixin::REQ_MODULE_ID,:option_1!,:option_2!], method_argument_names)
|
43
|
-
module_type = get_module_type(context_params)
|
44
|
-
|
45
|
-
post_body = {
|
46
|
-
"#{module_type}_id".to_sym => module_id,
|
47
|
-
:remote_name => remote_name,
|
48
|
-
:remote_url => remote_url
|
49
|
-
}
|
50
|
-
|
51
|
-
response = post rest_url("#{module_type}/add_git_remote"), post_body
|
52
|
-
return response unless response.ok?
|
53
|
-
OsUtil.print("Successfully added remote '#{remote_name}'", :green)
|
54
|
-
nil
|
55
|
-
end
|
56
|
-
|
57
|
-
def remote_list_aux(context_params)
|
58
|
-
module_id = context_params.retrieve_arguments([::DTK::Client::ModuleMixin::REQ_MODULE_ID], method_argument_names)
|
59
|
-
module_type = get_module_type(context_params)
|
60
|
-
|
61
|
-
post_body = {
|
62
|
-
"#{module_type}_id".to_sym => module_id
|
63
|
-
}
|
64
|
-
|
65
|
-
response = post rest_url("#{module_type}/info_git_remote"), post_body
|
66
|
-
response.render_table(:remotes)
|
67
|
-
end
|
68
|
-
|
69
|
-
|
70
|
-
end
|
71
|
-
end
|
@@ -1,46 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Copyright (C) 2010-2016 dtk contributors
|
3
|
-
#
|
4
|
-
# This file is part of the dtk project.
|
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
|
-
module DTK::Client
|
19
|
-
module SetRequiredParamsMixin
|
20
|
-
def set_required_attributes_aux(id, type, subtype = nil, additional_message = nil)
|
21
|
-
id_field = "#{type}_id".to_sym
|
22
|
-
post_body = {
|
23
|
-
id_field => id,
|
24
|
-
:subtype => 'instance',
|
25
|
-
:filter => 'required_unset_attributes'
|
26
|
-
}
|
27
|
-
post_body.merge!(:subtype => subtype.to_s) if subtype
|
28
|
-
response = post rest_url("#{type}/get_attributes"), post_body
|
29
|
-
return response unless response.ok?
|
30
|
-
missing_params = response.data
|
31
|
-
if missing_params.empty?
|
32
|
-
response.set_data('Message' => "No parameters to set.")
|
33
|
-
response
|
34
|
-
else
|
35
|
-
param_bindings = DTK::Shell::InteractiveWizard.resolve_missing_params(missing_params, additional_message)
|
36
|
-
post_body = {
|
37
|
-
id_field => id,
|
38
|
-
:av_pairs_hash => param_bindings.inject(Hash.new){|h,r|h.merge(r[:id] => r[:value])}
|
39
|
-
}
|
40
|
-
response = post rest_url("#{type}/set_attributes"), post_body
|
41
|
-
return response unless response.ok?
|
42
|
-
response.data
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
@@ -1,239 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Copyright (C) 2010-2016 dtk contributors
|
3
|
-
#
|
4
|
-
# This file is part of the dtk project.
|
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
|
-
dtk_require_from_base("dtk_logger")
|
19
|
-
dtk_require_from_base("util/os_util")
|
20
|
-
dtk_require_from_base('configurator')
|
21
|
-
|
22
|
-
module DTK::Client
|
23
|
-
class Account < CommandBaseThor
|
24
|
-
include ParseFile
|
25
|
-
|
26
|
-
KEY_EXISTS_ALREADY_CONTENT = 'key exists already'
|
27
|
-
|
28
|
-
no_tasks do
|
29
|
-
|
30
|
-
def password_prompt(message, add_options=true)
|
31
|
-
begin
|
32
|
-
# while line = Readline.readline("#{message}: ", add_hist = false)
|
33
|
-
# using 'ask' from highline gem to be able to hide input for key and secret
|
34
|
-
while line = (HighLine.ask("#{message}") { |q| q.echo = false})
|
35
|
-
raise Interrupt if line.empty?
|
36
|
-
return line
|
37
|
-
end
|
38
|
-
rescue Interrupt
|
39
|
-
return nil
|
40
|
-
ensure
|
41
|
-
puts "\n" if line.nil?
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
def self.extended_context()
|
47
|
-
{
|
48
|
-
:context => {
|
49
|
-
:delete_ssh_key => {
|
50
|
-
:field => "display_name",
|
51
|
-
:url => "account/list_ssh_keys",
|
52
|
-
:opts => { :username => "#{::DTK::Client::Configurator.client_username}" }
|
53
|
-
}
|
54
|
-
},
|
55
|
-
:command => {
|
56
|
-
}
|
57
|
-
}
|
58
|
-
end
|
59
|
-
|
60
|
-
def self.internal_add_user_access(url, post_body, component_name)
|
61
|
-
response = post(rest_url(url),post_body)
|
62
|
-
key_exists_already = (response.error_message||'').include?(KEY_EXISTS_ALREADY_CONTENT)
|
63
|
-
puts "Key exists already for #{component_name}" if key_exists_already
|
64
|
-
[response, key_exists_already]
|
65
|
-
end
|
66
|
-
|
67
|
-
def self.add_key(path_to_key, first_registration=false, name='dtk-client')
|
68
|
-
match, matched_username = nil, nil
|
69
|
-
|
70
|
-
unless File.file?(path_to_key)
|
71
|
-
# OsUtil.put_warning "[ERROR] " ,"No ssh key file found at (#{path_to_key}). Path is wrong or it is necessary to generate the public rsa key (e.g., run `ssh-keygen -t rsa`)", :red
|
72
|
-
raise DtkError,"[ERROR] No ssh key file found at (#{path_to_key}). Path is wrong or it is necessary to generate the public rsa key (e.g., run `ssh-keygen -t rsa`)."
|
73
|
-
end
|
74
|
-
|
75
|
-
rsa_pub_key = SSHUtil.read_and_validate_pub_key(path_to_key)
|
76
|
-
|
77
|
-
post_body = { :rsa_pub_key => rsa_pub_key.chomp }
|
78
|
-
post_body.merge!(:username => name.chomp) if name
|
79
|
-
post_body.merge!(:first_registration => first_registration)
|
80
|
-
|
81
|
-
proper_response = nil
|
82
|
-
response, key_exists_already = Account.internal_add_user_access("account/add_user_direct_access", post_body, 'service module')
|
83
|
-
|
84
|
-
return response unless (response.ok? || key_exists_already)
|
85
|
-
|
86
|
-
match = response.data['match']
|
87
|
-
matched_username = response.data['matched_username']
|
88
|
-
|
89
|
-
if response && !match
|
90
|
-
repo_manager_fingerprint,repo_manager_dns = response.data_ret_and_remove!(:repo_manager_fingerprint,:repo_manager_dns)
|
91
|
-
|
92
|
-
SSHUtil.update_ssh_known_hosts(repo_manager_dns,repo_manager_fingerprint)
|
93
|
-
name = response.data["new_username"]
|
94
|
-
|
95
|
-
OsUtil.print("SSH key '#{name}' added successfully!", :yellow)
|
96
|
-
|
97
|
-
end
|
98
|
-
|
99
|
-
return response, match, matched_username
|
100
|
-
end
|
101
|
-
|
102
|
-
desc "set-password", "Change password for your dtk user account"
|
103
|
-
def set_password(context_params)
|
104
|
-
old_pass_prompt, old_pass, new_pass_prompt, confirm_pass_prompt = nil
|
105
|
-
cred_file = ::DTK::Client::Configurator::CRED_FILE
|
106
|
-
old_pass = parse_key_value_file(cred_file)[:password]
|
107
|
-
username = parse_key_value_file(cred_file)[:username]
|
108
|
-
|
109
|
-
if old_pass.nil?
|
110
|
-
OsUtil.print("Unable to retrieve your current password!", :yellow)
|
111
|
-
return
|
112
|
-
end
|
113
|
-
|
114
|
-
3.times do
|
115
|
-
old_pass_prompt = password_prompt("Enter old password: ")
|
116
|
-
|
117
|
-
break if (old_pass.eql?(old_pass_prompt) || old_pass_prompt.nil?)
|
118
|
-
OsUtil.print("Incorrect old password!", :yellow)
|
119
|
-
end
|
120
|
-
return unless old_pass.eql?(old_pass_prompt)
|
121
|
-
|
122
|
-
new_pass_prompt = password_prompt("Enter new password: ")
|
123
|
-
return if new_pass_prompt.nil?
|
124
|
-
confirm_pass_prompt = password_prompt("Confirm new password: ")
|
125
|
-
|
126
|
-
if new_pass_prompt.eql?(confirm_pass_prompt)
|
127
|
-
post_body = {:new_password => new_pass_prompt}
|
128
|
-
response = post rest_url("account/set_password"), post_body
|
129
|
-
return response unless response.ok?
|
130
|
-
|
131
|
-
::DTK::Client::Configurator.regenerate_conf_file(cred_file, [['username', "#{username.to_s}"], ['password', "#{new_pass_prompt.to_s}"]], '')
|
132
|
-
OsUtil.print("Password changed successfully!", :yellow)
|
133
|
-
else
|
134
|
-
OsUtil.print("Entered passwords don't match!", :yellow)
|
135
|
-
return
|
136
|
-
end
|
137
|
-
end
|
138
|
-
|
139
|
-
desc "list-ssh-keys", "Show list of key pairs that your account profile has saved"
|
140
|
-
def list_ssh_keys(context_params)
|
141
|
-
post_body = {:username => ::DTK::Client::Configurator.client_username }
|
142
|
-
response = post rest_url("account/list_ssh_keys"), post_body
|
143
|
-
response.render_table(:account_ssh_keys)
|
144
|
-
end
|
145
|
-
|
146
|
-
desc "add-ssh-key KEYPAIR-NAME [PATH-TO-RSA-PUB-KEY]","Adds a named ssh key to your user account to access modules from the catalog. Optional parameters is path to a ssh rsa public key and default is <user-home-dir>/.ssh/id_rsa.pub"
|
147
|
-
def add_ssh_key(context_params)
|
148
|
-
name, path_to_key = context_params.retrieve_arguments([:option_1!, :option_2],method_argument_names)
|
149
|
-
path_to_key ||= SSHUtil.default_rsa_pub_key_path()
|
150
|
-
|
151
|
-
response, matched, matched_username = Account.add_key(path_to_key, false, name)
|
152
|
-
|
153
|
-
if matched
|
154
|
-
DTK::Client::OsUtil.print("Provided SSH pub key has already been added.", :yellow)
|
155
|
-
elsif matched_username
|
156
|
-
DTK::Client::OsUtil.print("User ('#{matched_username}') already exists.", :yellow)
|
157
|
-
else
|
158
|
-
DTK::Client::Configurator.add_current_user_to_direct_access() if response.ok?
|
159
|
-
end
|
160
|
-
|
161
|
-
if response.ok? && response.data(:repoman_registration_error)
|
162
|
-
OsUtil.print("Warning: We were not able to register your key with remote catalog! #{response.data(:repoman_registration_error)}", :yellow)
|
163
|
-
end
|
164
|
-
|
165
|
-
response.ok? ? nil : response
|
166
|
-
end
|
167
|
-
|
168
|
-
desc "delete-ssh-key KEYPAIR-NAME [-y]","Deletes the named ssh key from your user account"
|
169
|
-
method_option :force, :aliases => '-y', :type => :boolean, :default => false
|
170
|
-
def delete_ssh_key(context_params)
|
171
|
-
name = context_params.retrieve_arguments([:option_1!],method_argument_names)
|
172
|
-
|
173
|
-
unless options.force?
|
174
|
-
is_go = Console.confirmation_prompt("Are you sure you want to delete SSH key '#{name}'"+"?")
|
175
|
-
return nil unless is_go
|
176
|
-
end
|
177
|
-
|
178
|
-
response = post rest_url("account/remove_user_direct_access"), { :username => name.chomp }
|
179
|
-
return response unless response.ok?
|
180
|
-
|
181
|
-
if response.ok? && response.data(:repoman_registration_error)
|
182
|
-
OsUtil.print("Warning: We were not able to unregister your key with remote catalog! #{response.data(:repoman_registration_error)}", :yellow)
|
183
|
-
end
|
184
|
-
|
185
|
-
OsUtil.print("SSH key '#{name}' removed successfully!", :yellow)
|
186
|
-
nil
|
187
|
-
end
|
188
|
-
|
189
|
-
desc "set-default-namespace NAMESPACE", "Sets default namespace for your user account"
|
190
|
-
def set_default_namespace(context_params)
|
191
|
-
default_namespace = context_params.retrieve_arguments([:option_1!],method_argument_names)
|
192
|
-
post_body = { :namespace => default_namespace.chomp }
|
193
|
-
|
194
|
-
response = post rest_url("account/set_default_namespace"), post_body
|
195
|
-
return response unless response.ok?
|
196
|
-
|
197
|
-
OsUtil.print("Your default namespace has been set to '#{default_namespace}'!", :yellow)
|
198
|
-
nil
|
199
|
-
end
|
200
|
-
|
201
|
-
desc "set-catalog-credentials", "Sets catalog credentials"
|
202
|
-
def set_catalog_credentials(context_params)
|
203
|
-
creds = DTK::Client::Configurator.enter_catalog_credentials()
|
204
|
-
|
205
|
-
response = post rest_url("account/set_catalog_credentials"), { :username => creds[:username], :password => creds[:password], :validate => true }
|
206
|
-
return response unless response.ok?
|
207
|
-
|
208
|
-
OsUtil.print("Your catalog credentials have been set!", :yellow)
|
209
|
-
nil
|
210
|
-
end
|
211
|
-
|
212
|
-
desc "register-catalog-user", "Create your catalog user"
|
213
|
-
def register_catalog_user(context_params)
|
214
|
-
body_params = DTK::Shell::InteractiveWizard.interactive_user_input([
|
215
|
-
{:username => { :required => true} },
|
216
|
-
{:password => { :type => :password }},
|
217
|
-
{:repeat_password => { :type => :repeat_password }},
|
218
|
-
{:email => { :type => :email, :required => true }},
|
219
|
-
{:first_name => {}},
|
220
|
-
{:last_name => {}}
|
221
|
-
])
|
222
|
-
OsUtil.print("Creating account please wait ...", :white)
|
223
|
-
response = post rest_url("account/register_catalog_account"), body_params
|
224
|
-
|
225
|
-
if response.ok?
|
226
|
-
OsUtil.print("You have successfully created catalog account!", :green)
|
227
|
-
if Console.confirmation_prompt_simple("Do you want to make this account active?")
|
228
|
-
response = post rest_url("account/set_catalog_credentials"), { :username => body_params[:username], :password => body_params[:password], :validate => true }
|
229
|
-
OsUtil.print("Catalog user '#{body_params[:username]}' is currently active user!", :green)
|
230
|
-
end
|
231
|
-
else
|
232
|
-
return response
|
233
|
-
end
|
234
|
-
|
235
|
-
nil
|
236
|
-
end
|
237
|
-
|
238
|
-
end
|
239
|
-
end
|