dtk-client 0.5.6.1

Sign up to get free protection for your applications and to get access to all the features.
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