dtk-client 0.5.6.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.
Files changed (120) hide show
  1. checksums.yaml +15 -0
  2. data/Gemfile +5 -0
  3. data/Gemfile_dev +12 -0
  4. data/README.md +78 -0
  5. data/bin/dtk +54 -0
  6. data/bin/dtk-shell +15 -0
  7. data/dtk-client.gemspec +49 -0
  8. data/lib/auxiliary.rb +13 -0
  9. data/lib/bundler_monkey_patch.rb +9 -0
  10. data/lib/client.rb +48 -0
  11. data/lib/command_helper.rb +16 -0
  12. data/lib/command_helpers/git_repo.rb +391 -0
  13. data/lib/command_helpers/jenkins_client/config_xml.rb +271 -0
  14. data/lib/command_helpers/jenkins_client.rb +91 -0
  15. data/lib/command_helpers/service_importer.rb +99 -0
  16. data/lib/command_helpers/service_link.rb +18 -0
  17. data/lib/command_helpers/ssh_processing.rb +43 -0
  18. data/lib/commands/common/thor/assembly_workspace.rb +1089 -0
  19. data/lib/commands/common/thor/clone.rb +39 -0
  20. data/lib/commands/common/thor/common.rb +34 -0
  21. data/lib/commands/common/thor/edit.rb +168 -0
  22. data/lib/commands/common/thor/list_diffs.rb +84 -0
  23. data/lib/commands/common/thor/pull_clone_changes.rb +11 -0
  24. data/lib/commands/common/thor/pull_from_remote.rb +99 -0
  25. data/lib/commands/common/thor/purge_clone.rb +26 -0
  26. data/lib/commands/common/thor/push_clone_changes.rb +45 -0
  27. data/lib/commands/common/thor/push_to_remote.rb +45 -0
  28. data/lib/commands/common/thor/reparse.rb +36 -0
  29. data/lib/commands/common/thor/set_required_params.rb +29 -0
  30. data/lib/commands/common/thor/task_status.rb +81 -0
  31. data/lib/commands/thor/account.rb +213 -0
  32. data/lib/commands/thor/assembly.rb +329 -0
  33. data/lib/commands/thor/attribute.rb +62 -0
  34. data/lib/commands/thor/component.rb +52 -0
  35. data/lib/commands/thor/component_module.rb +829 -0
  36. data/lib/commands/thor/component_template.rb +153 -0
  37. data/lib/commands/thor/dependency.rb +18 -0
  38. data/lib/commands/thor/developer.rb +105 -0
  39. data/lib/commands/thor/dtk.rb +117 -0
  40. data/lib/commands/thor/library.rb +107 -0
  41. data/lib/commands/thor/node.rb +411 -0
  42. data/lib/commands/thor/node_group.rb +211 -0
  43. data/lib/commands/thor/node_template.rb +88 -0
  44. data/lib/commands/thor/project.rb +17 -0
  45. data/lib/commands/thor/provider.rb +155 -0
  46. data/lib/commands/thor/repo.rb +35 -0
  47. data/lib/commands/thor/service.rb +656 -0
  48. data/lib/commands/thor/service_module.rb +806 -0
  49. data/lib/commands/thor/state_change.rb +10 -0
  50. data/lib/commands/thor/target.rb +94 -0
  51. data/lib/commands/thor/task.rb +100 -0
  52. data/lib/commands/thor/utils.rb +4 -0
  53. data/lib/commands/thor/workspace.rb +437 -0
  54. data/lib/commands.rb +40 -0
  55. data/lib/config/cacert.pem +3785 -0
  56. data/lib/config/client.conf.header +18 -0
  57. data/lib/config/configuration.rb +82 -0
  58. data/lib/config/default.conf +14 -0
  59. data/lib/config/disk_cacher.rb +60 -0
  60. data/lib/configurator.rb +92 -0
  61. data/lib/context_router.rb +23 -0
  62. data/lib/core.rb +460 -0
  63. data/lib/domain/git_adapter.rb +221 -0
  64. data/lib/domain/response.rb +234 -0
  65. data/lib/dtk-client/version.rb +3 -0
  66. data/lib/dtk_constants.rb +23 -0
  67. data/lib/dtk_logger.rb +96 -0
  68. data/lib/error.rb +74 -0
  69. data/lib/git-logs/git.log +0 -0
  70. data/lib/parser/adapters/option_parser.rb +53 -0
  71. data/lib/parser/adapters/thor/common_option_defs.rb +12 -0
  72. data/lib/parser/adapters/thor.rb +509 -0
  73. data/lib/require_first.rb +87 -0
  74. data/lib/search_hash.rb +27 -0
  75. data/lib/shell/context.rb +975 -0
  76. data/lib/shell/context_aux.rb +29 -0
  77. data/lib/shell/domain.rb +447 -0
  78. data/lib/shell/header_shell.rb +27 -0
  79. data/lib/shell/help_monkey_patch.rb +221 -0
  80. data/lib/shell/interactive_wizard.rb +233 -0
  81. data/lib/shell/parse_monkey_patch.rb +22 -0
  82. data/lib/shell/status_monitor.rb +105 -0
  83. data/lib/shell.rb +219 -0
  84. data/lib/util/console.rb +143 -0
  85. data/lib/util/dtk_puppet.rb +46 -0
  86. data/lib/util/os_util.rb +265 -0
  87. data/lib/view_processor/augmented_simple_list.rb +27 -0
  88. data/lib/view_processor/hash_pretty_print.rb +106 -0
  89. data/lib/view_processor/simple_list.rb +139 -0
  90. data/lib/view_processor/table_print.rb +277 -0
  91. data/lib/view_processor.rb +112 -0
  92. data/puppet/manifests/init.pp +72 -0
  93. data/puppet/manifests/params.pp +16 -0
  94. data/puppet/r8meta.puppet.yml +18 -0
  95. data/puppet/templates/bash_profile.erb +2 -0
  96. data/puppet/templates/client.conf.erb +1 -0
  97. data/puppet/templates/dtkclient.erb +2 -0
  98. data/spec/assembly_spec.rb +50 -0
  99. data/spec/assembly_template_spec.rb +51 -0
  100. data/spec/component_template_spec.rb +40 -0
  101. data/spec/dependency_spec.rb +6 -0
  102. data/spec/dtk_shell_spec.rb +13 -0
  103. data/spec/dtk_spec.rb +33 -0
  104. data/spec/lib/spec_helper.rb +10 -0
  105. data/spec/lib/spec_thor.rb +105 -0
  106. data/spec/module_spec.rb +35 -0
  107. data/spec/node_spec.rb +43 -0
  108. data/spec/node_template_spec.rb +25 -0
  109. data/spec/project_spec.rb +6 -0
  110. data/spec/repo_spec.rb +7 -0
  111. data/spec/response_spec.rb +52 -0
  112. data/spec/service_spec.rb +41 -0
  113. data/spec/state_change_spec.rb +7 -0
  114. data/spec/table_print_spec.rb +48 -0
  115. data/spec/target_spec.rb +57 -0
  116. data/spec/task_spec.rb +28 -0
  117. data/views/assembly/augmented_simple_list.rb +12 -0
  118. data/views/assembly_template/augmented_simple_list.rb +12 -0
  119. data/views/list_task/augmented_simple_list.rb +12 -0
  120. metadata +351 -0
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ NmMzODFiMDI1NjJjZTJlNGEwM2U1Yzc1MTgyNDRkMjZkMWU5NjZkZA==
5
+ data.tar.gz: !binary |-
6
+ MmNmNmQxMDlmNTIxMTYxZjZmM2Y1NjU5ZjI5MTNjZWZiY2I1MjA5ZQ==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ Nzg5NWQ5NTkxOWNlYTdhNmJiNmU4MzYxMDBlMjM4MmE2MTYxYTdlZmZhNjQy
10
+ M2EwZGJjZmM1M2U0ZjdkYWU2N2Q3NjhlZGFjNTRiZGU4ZmE3NDRjMmMxODQ1
11
+ ZDM3NTU1OThkZmM4YmExNWJjN2Y3NWM4YzBiOWVmYTYzMDEyYzI=
12
+ data.tar.gz: !binary |-
13
+ NjI0M2MzMmRiY2ZiNzI0ZjMxOGVmZGUxZjE3NWUyNzlkYzIwMTE0MWI2NGFi
14
+ OTZlMzIyNWE0NmY1ODQyODIyZTFkN2Y4YjQ0MzljNjAyZjU3MjRiNjYzYzgx
15
+ YjdhN2Y5Nzg2NGI2NDllMjU0MTc1OGRiMGVhOTkxNDEwNzY4NjE=
data/Gemfile ADDED
@@ -0,0 +1,5 @@
1
+ source 'http://rubygems.org'
2
+
3
+ # dependcies are defined in gemspec file since to avoid duplication
4
+ # gemspec :name => 'dtk-client'
5
+ gemspec
data/Gemfile_dev ADDED
@@ -0,0 +1,12 @@
1
+ source 'http://rubygems.org'
2
+
3
+ # dependcies are defined in gemspec file since to avoid duplication
4
+ # gemspec :name => 'dtk-client'
5
+ gemspec
6
+
7
+ # development gems which are not included in production Gemfile
8
+ gem 'rspec','~> 2.12.0'
9
+ gem 'awesome_print','~> 1.1.0'
10
+
11
+ gem 'ruby-debug','0.10.4' if RUBY_VERSION == '1.8.7'
12
+ gem 'debugger','>= 1.6.5' if RUBY_VERSION == '1.9.3'
data/README.md ADDED
@@ -0,0 +1,78 @@
1
+ DTK Client installation
2
+ ==============================
3
+
4
+ To install DTK Client, follow these steps
5
+
6
+ - Ruby installation is required (verions 1.8.7 and newer are supported)
7
+ - Git is required for all features to work ([install instructions](http://git-scm.com/book/en/Getting-Started-Installing-Git))
8
+ - Install the dtk-client gem:
9
+ `gem install dtk-client`
10
+
11
+ - Type <tt>dtk</tt> or <tt>dtk-shell</tt> to start using the client
12
+ On the first run, Client will present you with a wizard to enter your server and authentication info.
13
+
14
+ DEVELOPMENT SETUP - DTK Client
15
+ ==============================
16
+
17
+ Pre-requisites
18
+ ----------------------
19
+
20
+ - Make sure you are using Ruby 1.8.7 , use following command to check ruby version <tt>ruby -v</tt>
21
+
22
+ Git setup
23
+ ----------------------
24
+
25
+ - Make sure that you have clone dtk-common in same folder, use:
26
+
27
+ ```
28
+ git clone git@github.com:rich-reactor8/dtk-common.git dtk-common
29
+ ```
30
+
31
+ Make sure that in same folder you have cloned dtk-common project. Also that project is under the same name.
32
+
33
+ Gem Setup
34
+ ----------------------
35
+
36
+ - Make sure that you have bundler gem, check with <tt>gem list bundler</tt>
37
+ - If you don't have it install bundler gem <tt>gem install bundler</tt>
38
+ - Run bundle from dtk-client folder <tt>bundle install</tt>
39
+
40
+ Path Setup
41
+ ----------------------
42
+
43
+ - Add dtk-client to PATH e.g.
44
+
45
+ ```
46
+ export PATH=$PATH:/home/user/dtk-client/bin
47
+ ```
48
+
49
+ Development configuration setup
50
+ ----------------------
51
+
52
+ - Copy `default.conf` from `lib/config`
53
+ - Rename copied file to `local.conf` and place it in `lib/config`
54
+ - Set configuration at will, local configuration is git ignored
55
+
56
+ NOTE: There is client configuration which can be found in `~/dtk/client.conf`. Local configuration takes presedence over any other configuration.
57
+
58
+ Configuration Setup
59
+ ----------------------
60
+
61
+ - Create file <tt>~dtkconfig</tt> in you dtk dir (~/dtk) e.g. home/foo-user/dtk/connection.conf
62
+ there you will define user credentials e.g.
63
+
64
+ ```
65
+ username=abh
66
+ password=r8server
67
+ server_host=ec2-54-247-191-95.eu-west-1.compute.amazonaws.com
68
+ secure_connection=true
69
+ ```
70
+ Run Tests
71
+ ----------------------
72
+
73
+ - From dtk-client project root run <tt>rspec</tt>, this will run all unit tests
74
+
75
+
76
+ License
77
+ ----------------------
78
+ DTK Client is released under the GPLv3 license. Please see LICENSE for more details.
data/bin/dtk ADDED
@@ -0,0 +1,54 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # GLOBAL IDENTIFIER
4
+ $shell_mode = false
5
+
6
+ require File.expand_path('../lib/client', File.dirname(__FILE__))
7
+ require File.expand_path('../lib/configurator', File.dirname(__FILE__))
8
+ require File.expand_path('../lib/parser/adapters/thor', File.dirname(__FILE__))
9
+ require File.expand_path('../lib/shell/context', File.dirname(__FILE__))
10
+ require File.expand_path('../lib/shell/domain', File.dirname(__FILE__))
11
+ require File.expand_path('../lib/commands/thor/account', File.dirname(__FILE__))
12
+ require File.expand_path('../lib/command_helpers/ssh_processing', File.dirname(__FILE__))
13
+ require File.expand_path('../lib/shell/parse_monkey_patch', File.dirname(__FILE__))
14
+ require File.expand_path('../lib/shell/help_monkey_patch', File.dirname(__FILE__))
15
+
16
+
17
+ require 'shellwords'
18
+
19
+ $: << "/usr/lib/ruby/1.8/" #TODO: put in to get around path problem in rvm 1.9.2 environment
20
+
21
+ ::DTK::Client::Configurator.check_config_exists
22
+ ::DTK::Client::Configurator.check_git
23
+ ::DTK::Client::Configurator.create_missing_clone_dirs
24
+
25
+
26
+ # check if .add_direct_access file exists, if not then add direct access and create .add_direct_access file
27
+ check_direct_access(::DTK::Client::Configurator.check_direct_access)
28
+ entries = []
29
+
30
+ if ARGV.size > 0
31
+ entries = ARGV
32
+ entries = DTK::Shell::Context.check_for_sym_link(entries)
33
+ entity_name = entries.shift
34
+ end
35
+
36
+ # special case for when no params are provided use help method
37
+ if (entity_name == 'help' || entity_name.nil?)
38
+ entity_name = 'dtk'
39
+ args = ['help']
40
+ else
41
+ args = entries
42
+ end
43
+
44
+ context = DTK::Shell::Context.new(true)
45
+
46
+ begin
47
+ entity_name, method_name, context_params, thor_options = context.get_dtk_command_parameters(entity_name, args)
48
+
49
+ top_level_execute(entity_name, method_name, context_params, thor_options, false)
50
+ rescue DTK::Client::DtkError => e
51
+ DtkLogger.instance.error(e.message, true)
52
+ rescue Exception => e
53
+ DtkLogger.instance.error_pp(e.message, e.backtrace)
54
+ end
data/bin/dtk-shell ADDED
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env ruby
2
+ require File.expand_path('../lib/shell', File.dirname(__FILE__))
3
+ require File.expand_path('../lib/commands/thor/account', File.dirname(__FILE__))
4
+ require File.expand_path('../lib/command_helpers/ssh_processing', File.dirname(__FILE__))
5
+
6
+ trap("INT", "SIG_IGN")
7
+
8
+ ::DTK::Client::Configurator.check_config_exists
9
+ ::DTK::Client::Configurator.check_git
10
+ ::DTK::Client::Configurator.create_missing_clone_dirs
11
+
12
+ # check if .add_direct_access file exists, if not then add direct access and create .add_direct_access file
13
+ check_direct_access(::DTK::Client::Configurator.check_direct_access)
14
+
15
+ run_shell_command()
@@ -0,0 +1,49 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path('../lib/dtk-client/version', __FILE__)
3
+
4
+ Gem::Specification.new do |gem|
5
+ gem.authors = ["Rich PELAVIN"]
6
+ gem.email = ["rich@reactor8.com"]
7
+ gem.description = %q{Dtk client is CLI tool used for communication with Reactor8.}
8
+ gem.summary = %q{DTK CLI client for DTK server interaction.}
9
+ gem.homepage = "https://github.com/rich-reactor8/dtk-client"
10
+ gem.licenses = ["GPL-3.0"]
11
+
12
+ gem.files = %w(README.md Gemfile Gemfile_dev dtk-client.gemspec)
13
+ gem.files += Dir.glob("bin/**/*")
14
+ gem.files += Dir.glob("lib/**/*")
15
+ gem.files += Dir.glob("puppet/**/*")
16
+ gem.files += Dir.glob("spec/**/*")
17
+ gem.files += Dir.glob("views/**/*")
18
+
19
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
20
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
21
+ gem.name = "dtk-client"
22
+ gem.require_paths = ["lib"]
23
+ gem.version = "#{DtkClient::VERSION}.#{ARGV[3]}".chomp(".")
24
+
25
+ gem.add_dependency 'bundler','>= 1.2.4'
26
+ gem.add_dependency 'json_pure' ,'1.7.4'
27
+ gem.add_dependency 'diff-lcs','1.1.3'
28
+ gem.add_dependency 'mime-types','~> 1.25'
29
+ gem.add_dependency 'hirb','~> 0.7.0'
30
+ gem.add_dependency 'thor','~> 0.15.4'
31
+ gem.add_dependency 'erubis','~> 2.7.0'
32
+ gem.add_dependency 'dtk-common-core','~> 0.5.4'
33
+ gem.add_dependency 'git','~> 1.2.6'
34
+ gem.add_dependency 'colorize','~> 0.5.8'
35
+ gem.add_dependency 'highline', '1.6.16'
36
+ gem.add_dependency 'awesome_print', '1.1.0'
37
+
38
+ # gem.add_dependency 'rb-readline', '0.5.0'
39
+ # gem.add_dependency 'activesupport','~> 3.2.12'
40
+ # gem.add_dependency 'i18n','0.6.1'
41
+ # gem.add_dependency 'puppet','~> 3.1.0'
42
+ # gem.add_dependency 'jenkins-client','~> 0.0.1'
43
+ # gem.add_dependency 'rspec','~> 2.12.0'
44
+ # gem.add_dependency 'awesome_print','~> 1.1.0'
45
+ # gem.add_dependency 'rdoc','= 3.12.1'l
46
+ # gem.add_development_dependency 'ruby-debug','>= 0.10.4'
47
+ # gem.add_development_dependency 'awesome_print','>= 1.1.0'
48
+ # gem.add_development_dependency 'rspec','~> 2.12.0'
49
+ end
data/lib/auxiliary.rb ADDED
@@ -0,0 +1,13 @@
1
+ module DTK
2
+ module Client
3
+ module Auxiliary
4
+ def cap_form(x)
5
+ x.gsub('-','_').to_s.split("_").map{|t|t.capitalize}.join("")
6
+ end
7
+
8
+ def snake_form(command_class,seperator="_")
9
+ command_class.to_s.gsub(/^.*::/, '').gsub(/Command$/,'').scan(/[A-Z][a-z]+/).map{|w|w.downcase}.join(seperator)
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,9 @@
1
+ module Bundler
2
+ module SharedHelpers
3
+
4
+ private
5
+ def find_gemfile
6
+ File.expand_path('../Gemfile', File.dirname(__FILE__))
7
+ end
8
+ end
9
+ end
data/lib/client.rb ADDED
@@ -0,0 +1,48 @@
1
+ require 'rubygems'
2
+
3
+ begin
4
+ require File.expand_path("require_first", File.dirname(__FILE__))
5
+
6
+ if gem_only_available?
7
+ # loads it only if there is no common folder, and gem is installed
8
+ require 'dtk_common_core'
9
+ end
10
+
11
+ # Load DTK Common
12
+ dtk_require_dtk_common_core("dtk_common_core")
13
+
14
+ # Monkey Patching bundler to support loading specific Gemfile from dtk-client project's root - Ticket: DTK-585
15
+ dtk_require("config/configuration")
16
+
17
+
18
+ if DTK::Configuration.get(:debug_grit)
19
+ # INSERT NEW CODE HERE
20
+ end
21
+
22
+ # we don't need Bundler.setup but will leave it commented just in case
23
+ # TODO: This is temp solution which will not use bundler.setup when in dev mode
24
+ # thus allowing us to use system gems and not just the ones specified in Gemfile
25
+ unless DTK::Configuration.get(:development_mode)
26
+ require 'bundler'
27
+ #TODO: rich temp hack becaus eof problem with gem dependencies; changed this because it was not working in 0.19.0
28
+ if Bundler.respond_to?(:start)
29
+ Bundler.start
30
+ end
31
+ dtk_require("bundler_monkey_patch")
32
+ end
33
+
34
+ ########
35
+ dtk_require("auxiliary")
36
+ dtk_require("core")
37
+ dtk_require("error")
38
+ dtk_require("dtk_constants")
39
+ dtk_require("commands")
40
+ dtk_require("view_processor")
41
+ dtk_require("search_hash")
42
+ dtk_require("dtk_logger")
43
+ rescue SystemExit, Interrupt
44
+ #puts "DTK Client action canceled."
45
+ exit(1)
46
+ end
47
+
48
+
@@ -0,0 +1,16 @@
1
+ module DTK; module Client
2
+ module CommandHelperMixin
3
+ def Helper(helper_class_name)
4
+ unless Loaded[helper_class_name]
5
+ dtk_nested_require('command_helpers',helper_class_name)
6
+ Loaded[helper_class_name] = true
7
+ end
8
+ CommandHelper.const_get Common::Aux.snake_to_camel_case(helper_class_name.to_s)
9
+ end
10
+ Loaded = Hash.new
11
+ end
12
+
13
+ #TODO: make all commands helpers a subclass of this
14
+ class CommandHelper
15
+ end
16
+ end; end