egon 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/rubygem-egon.spec ADDED
@@ -0,0 +1,112 @@
1
+ %{?scl:%scl_package rubygem-%{gem_name}}
2
+ %{!?scl:%global pkg_name %{name}}
3
+
4
+ %global gem_name egon
5
+
6
+ %global foreman_dir /usr/share/foreman
7
+ %global foreman_bundlerd_dir %{foreman_dir}/bundler.d
8
+ %global foreman_pluginconf_dir %{foreman_dir}/config/settings.plugins.d
9
+
10
+ %if !("%{?scl}" == "ruby193" || 0%{?rhel} > 6 || 0%{?fedora} > 16)
11
+ %global gem_dir /usr/lib/ruby/gems/1.8
12
+ %global gem_instdir %{gem_dir}/gems/%{gem_name}-%{version}
13
+ %global gem_libdir %{gem_instdir}/lib
14
+ %global gem_cache %{gem_dir}/cache/%{gem_name}-%{version}.gem
15
+ %global gem_spec %{gem_dir}/specifications/%{gem_name}-%{version}.gemspec
16
+ %global gem_docdir %{gem_dir}/doc/%{gem_name}-%{version}
17
+ %endif
18
+
19
+ %if "%{?scl}" == "ruby193"
20
+ %global scl_ruby /usr/bin/ruby193-ruby
21
+ %global scl_rake /usr/bin/ruby193-rake
22
+ ### TODO temp disabled for SCL
23
+ %global nodoc 1
24
+ %else
25
+ %global scl_ruby /usr/bin/ruby
26
+ %global scl_rake /usr/bin/rake
27
+ %endif
28
+
29
+ Summary: Egon Plugin
30
+ Name: %{?scl_prefix}rubygem-%{gem_name}
31
+
32
+ Version: 0.0.1
33
+ Release: 19%{dist}
34
+ Group: Development/Ruby
35
+ License: Distributable
36
+ URL: https://github.com/fusor/egon
37
+ Source0: http://rubygems.org/downloads/%{gem_name}-%{version}.gem
38
+
39
+ %if "%{?scl}" == "ruby193"
40
+ Requires: %{?scl_prefix}ruby-wrapper
41
+ BuildRequires: %{?scl_prefix}ruby-wrapper
42
+ %endif
43
+ %if "%{?scl}" == "ruby193" || 0%{?rhel} > 6 || 0%{?fedora} > 16
44
+ BuildRequires: %{?scl_prefix}rubygems-devel
45
+ %endif
46
+
47
+ %if 0%{?fedora} > 19
48
+ Requires: %{?scl_prefix}ruby(release) = 2.0.0
49
+ BuildRequires: %{?scl_prefix}ruby(release) = 2.0.0
50
+ %else
51
+ %if "%{?scl}" == "ruby193" || 0%{?rhel} > 6 || 0%{?fedora} > 16
52
+ Requires: %{?scl_prefix}ruby(abi) = 1.9.1
53
+ BuildRequires: %{?scl_prefix}ruby(abi) = 1.9.1
54
+ %else
55
+ Requires: ruby(abi) = 1.8
56
+ BuildRequires: ruby(abi) = 1.8
57
+ %endif
58
+ %endif
59
+
60
+ BuildArch: noarch
61
+ Provides: %{?scl_prefix}rubygem(egon) = %{version}
62
+
63
+ %description
64
+ Egon Plugin
65
+
66
+ %package doc
67
+ BuildArch: noarch
68
+ Requires: %{?scl_prefix}%{pkg_name} = %{version}-%{release}
69
+ Summary: Documentation for rubygem-%{gem_name}
70
+
71
+ %description doc
72
+ This package contains documentation for rubygem-%{gem_name}.
73
+
74
+ %prep
75
+ %setup -n %{pkg_name}-%{version} -q -c -T
76
+ mkdir -p .%{gem_dir}
77
+ %{?scl:scl enable %{scl} "}
78
+ gem install --local --install-dir .%{gem_dir} --force %{SOURCE0}
79
+ %{?scl:"}
80
+
81
+ %build
82
+
83
+ %install
84
+
85
+ mkdir -p %{buildroot}%{gem_dir}
86
+ cp -a .%{gem_dir}/* \
87
+ %{buildroot}%{gem_dir}/
88
+
89
+ mkdir -p %{buildroot}%{foreman_bundlerd_dir}
90
+ cat <<GEMFILE > %{buildroot}%{foreman_bundlerd_dir}/%{gem_name}.rb
91
+ gem '%{gem_name}'
92
+ GEMFILE
93
+
94
+ mkdir -p %{buildroot}%{foreman_pluginconf_dir}
95
+ # TODO: Do we need this guy?
96
+ #cp -a %{buildroot}/%{gem_instdir}/config/egon.yaml %{buildroot}%{foreman_pluginconf_dir}/
97
+
98
+ %clean
99
+ %{__rm} -rf %{buildroot}
100
+
101
+ %files
102
+ %defattr(-, root, root)
103
+ %{gem_instdir}/
104
+ %exclude %{gem_cache}
105
+ %{gem_spec}
106
+ %{foreman_bundlerd_dir}/%{gem_name}.rb
107
+ #%{foreman_pluginconf_dir}/egon.yaml
108
+
109
+ %files doc
110
+ %{gem_dir}/doc/%{gem_name}-%{version}
111
+
112
+ %changelog
@@ -0,0 +1,13 @@
1
+ require 'egon/undercloud/ssh-connection'
2
+ require 'stringio'
3
+
4
+ describe "SSHConnection" do
5
+
6
+ it "should timeout if host unreachable" do
7
+ connection = Egon::Undercloud::SSHConnection.new("194.0.0.0", "mock", "mock")
8
+ io = StringIO.new
9
+ message = connection.execute("ls", io)
10
+ expect(io.string.strip!).to eq("execution expired")
11
+ end
12
+
13
+ end
@@ -0,0 +1,45 @@
1
+ require 'egon/undercloud/installer'
2
+ require 'egon/undercloud/ssh-connection'
3
+ require 'egon/undercloud/commands'
4
+ require 'net/ssh'
5
+ require 'net/ssh/connection/session'
6
+
7
+ def run_and_assert_installer(installer, failure)
8
+ expect(installer.started?).to be false
9
+ expect(installer.completed?).to be false
10
+ expect(installer.failure?).to be false
11
+ sleep_count = 0
12
+ installer.install("ls")
13
+ # installer runs in the background if sleep_count > 0
14
+ while !installer.completed?
15
+ expect(installer.started?).to be true
16
+ sleep 1
17
+ end
18
+ expect(installer.started?).to be true
19
+ expect(installer.completed?).to be true
20
+ expect(installer.failure?).to be failure
21
+ end
22
+
23
+ describe "undercloud installer" do
24
+
25
+ before do
26
+ @connection = Egon::Undercloud::SSHConnection.new("194.0.0.0", "mock", "mock")
27
+ @installer = Egon::Undercloud::Installer.new(@connection)
28
+ end
29
+
30
+ it "installer should run in background and not fail" do
31
+ allow(@connection).to receive(:execute) { @connection.call_complete }
32
+ run_and_assert_installer(@installer, false)
33
+ end
34
+
35
+ it "exception raised by ssh should indicate failure" do
36
+ allow(Net::SSH).to receive(:start) { raise "Error in ssh" }
37
+ run_and_assert_installer(@installer, true)
38
+ end
39
+
40
+ it "connection should timeout and installer indicate failure" do
41
+ run_and_assert_installer(@installer, true)
42
+ end
43
+
44
+ end
45
+
metadata ADDED
@@ -0,0 +1,143 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: egon
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Egon and Fusor team
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-06-04 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.7'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.7'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: fog
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: 1.29.0
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 1.29.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: net-ssh
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 2.9.2
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: 2.9.2
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: 3.2.0
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ~>
81
+ - !ruby/object:Gem::Version
82
+ version: 3.2.0
83
+ description: ''
84
+ email:
85
+ - foreman-dev+egon@googlegroups.com
86
+ executables:
87
+ - undercloud-install-instack-virt.rb
88
+ - undercloud-install-satellite.rb
89
+ - undercloud-install-vanilla-rhel.rb
90
+ extensions: []
91
+ extra_rdoc_files: []
92
+ files:
93
+ - .gitignore
94
+ - .ruby-version
95
+ - Gemfile
96
+ - LICENSE
97
+ - README.md
98
+ - Rakefile
99
+ - bin/undercloud-install-instack-virt.rb
100
+ - bin/undercloud-install-satellite.rb
101
+ - bin/undercloud-install-vanilla-rhel.rb
102
+ - egon.gemspec
103
+ - lib/egon.rb
104
+ - lib/egon/overcloud/undercloud_handle.rb
105
+ - lib/egon/overcloud/undercloud_handle/deployment.rb
106
+ - lib/egon/overcloud/undercloud_handle/deployment_role.rb
107
+ - lib/egon/overcloud/undercloud_handle/flavor.rb
108
+ - lib/egon/overcloud/undercloud_handle/image.rb
109
+ - lib/egon/overcloud/undercloud_handle/node.rb
110
+ - lib/egon/undercloud/commands.rb
111
+ - lib/egon/undercloud/installer.rb
112
+ - lib/egon/undercloud/ssh-connection.rb
113
+ - lib/egon/version.rb
114
+ - rubygem-egon.spec
115
+ - test/test_ssh_connection.rb
116
+ - test/test_undercloud.rb
117
+ homepage: https://github.com/fusor/egon
118
+ licenses:
119
+ - GPL-3.0+
120
+ metadata: {}
121
+ post_install_message:
122
+ rdoc_options: []
123
+ require_paths:
124
+ - lib
125
+ required_ruby_version: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - ! '>='
128
+ - !ruby/object:Gem::Version
129
+ version: '0'
130
+ required_rubygems_version: !ruby/object:Gem::Requirement
131
+ requirements:
132
+ - - ! '>='
133
+ - !ruby/object:Gem::Version
134
+ version: '0'
135
+ requirements: []
136
+ rubyforge_project:
137
+ rubygems_version: 2.2.2
138
+ signing_key:
139
+ specification_version: 4
140
+ summary: A library on top of Fog that encapsulates TripleO deployment operations
141
+ test_files:
142
+ - test/test_ssh_connection.rb
143
+ - test/test_undercloud.rb