egon 0.4.8 → 1.0.0
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.
- checksums.yaml +8 -8
- data/Gemfile.lock +144 -0
- data/bin/initialize_overcloud.sh +48 -7
- data/bin/undercloud-install-local.rb +1 -1
- data/bin/undercloud-install-satellite.rb +1 -1
- data/bin/undercloud-install-vanilla-rhel.rb +1 -1
- data/egon.gemspec +1 -1
- data/lib/egon/overcloud/undercloud_handle/deployment.rb +138 -52
- data/lib/egon/overcloud/undercloud_handle/node.rb +24 -3
- data/lib/egon/overcloud/undercloud_handle.rb +5 -3
- data/lib/egon/undercloud/commands.rb +107 -3
- data/lib/egon/undercloud/installer.rb +4 -1
- data/lib/egon/version.rb +1 -1
- data/pkg/egon-0.0.1.gem +0 -0
- data/pkg/egon-0.0.2.gem +0 -0
- data/pkg/egon-0.1.0.gem +0 -0
- data/pkg/egon-0.4.3.gem +0 -0
- data/rubygem-egon.spec +6 -3
- data/test/test_undercloud_handle.rb +7 -37
- metadata +8 -19
- data/lib/egon/overcloud/undercloud_handle/deployment_role.rb +0 -9
- data/pkg/egon-0.2.0.gem +0 -0
- data/pkg/egon-0.3.1.gem +0 -0
- data/pkg/egon-0.3.2.gem +0 -0
- data/pkg/egon-0.3.3.gem +0 -0
- data/pkg/egon-0.3.4.gem +0 -0
- data/pkg/egon-0.3.5.gem +0 -0
- data/pkg/egon-0.3.6.gem +0 -0
- data/pkg/egon-0.4.0.gem +0 -0
- data/pkg/egon-0.4.1.gem +0 -0
- data/pkg/egon-0.4.2.gem +0 -0
- data/pkg/egon-0.4.4.gem +0 -0
- data/pkg/egon-0.4.5.gem +0 -0
- data/pkg/egon-0.4.6.gem +0 -0
- data/pkg/egon-0.4.7.gem +0 -0
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NjY5YTQ1NjU5ZjNkZTU0Nzg3NzExMTQ5NjI5YzRmNzNmN2Y3OTYxNA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
YzM2MjEyMTI0ZmI1MDZkN2ZkZTliYmQ0Y2Q3NGQ0YjlkOGUxMjQzYQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MWJmMjQyMmIwYjVlODY2MzNmMzk2ZDZlOGFhMTcxYjVkOTM0ODg1NDQwMjJl
|
10
|
+
OWRiNzBjOGZmNzdmNDVkZThiYmJhNmI3YWM2MWM3N2NiZjRmNDllOTEyMzk4
|
11
|
+
Mjc0Y2U0NGZhYmU2M2RlOTJkOWMzNGRmMzhiOTdiM2QwYWVkN2U=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MmYwODFlNzA0ZGUyNTQyNWQyY2JiNzcxNTNhMWYwMjYxZDFjN2ExZDY3ZTcy
|
14
|
+
OWEyMmMwYTM3YzEwMGRiM2I2MmYxYWM1YTQxZjg2Mjc2YmI4ZmQ1ODJlZmYy
|
15
|
+
ZDYyMWQ5MDJmZTgyNjI5Yjk1ZDJlMzIxODA0ZmE0MWYyZWJiODU=
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,144 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
egon (0.4.4)
|
5
|
+
|
6
|
+
GEM
|
7
|
+
remote: https://rubygems.org/
|
8
|
+
specs:
|
9
|
+
CFPropertyList (2.3.1)
|
10
|
+
builder (3.2.2)
|
11
|
+
diff-lcs (1.2.5)
|
12
|
+
excon (0.45.3)
|
13
|
+
fission (0.5.0)
|
14
|
+
CFPropertyList (~> 2.2)
|
15
|
+
fog (1.36.0)
|
16
|
+
fog-atmos
|
17
|
+
fog-aws (~> 0.0)
|
18
|
+
fog-brightbox (~> 0.4)
|
19
|
+
fog-core (~> 1.30)
|
20
|
+
fog-ecloud
|
21
|
+
fog-google (>= 0.0.2)
|
22
|
+
fog-json
|
23
|
+
fog-local
|
24
|
+
fog-powerdns (>= 0.1.1)
|
25
|
+
fog-profitbricks
|
26
|
+
fog-radosgw (>= 0.0.2)
|
27
|
+
fog-riakcs
|
28
|
+
fog-sakuracloud (>= 0.0.4)
|
29
|
+
fog-serverlove
|
30
|
+
fog-softlayer
|
31
|
+
fog-storm_on_demand
|
32
|
+
fog-terremark
|
33
|
+
fog-vmfusion
|
34
|
+
fog-voxel
|
35
|
+
fog-xml (~> 0.1.1)
|
36
|
+
ipaddress (~> 0.5)
|
37
|
+
nokogiri (~> 1.5, >= 1.5.11)
|
38
|
+
fog-atmos (0.1.0)
|
39
|
+
fog-core
|
40
|
+
fog-xml
|
41
|
+
fog-aws (0.4.0)
|
42
|
+
fog-core (~> 1.27)
|
43
|
+
fog-json (~> 1.0)
|
44
|
+
fog-xml (~> 0.1)
|
45
|
+
ipaddress (~> 0.8)
|
46
|
+
fog-brightbox (0.7.1)
|
47
|
+
fog-core (~> 1.22)
|
48
|
+
fog-json
|
49
|
+
inflecto (~> 0.0.2)
|
50
|
+
fog-core (1.30.0)
|
51
|
+
builder
|
52
|
+
excon (~> 0.45)
|
53
|
+
formatador (~> 0.2)
|
54
|
+
mime-types
|
55
|
+
net-scp (~> 1.1)
|
56
|
+
net-ssh (>= 2.1.3)
|
57
|
+
fog-ecloud (0.1.2)
|
58
|
+
fog-core
|
59
|
+
fog-xml
|
60
|
+
fog-google (0.0.5)
|
61
|
+
fog-core
|
62
|
+
fog-json
|
63
|
+
fog-xml
|
64
|
+
fog-json (1.0.2)
|
65
|
+
fog-core (~> 1.0)
|
66
|
+
multi_json (~> 1.10)
|
67
|
+
fog-local (0.2.1)
|
68
|
+
fog-core (~> 1.27)
|
69
|
+
fog-powerdns (0.1.1)
|
70
|
+
fog-core (~> 1.27)
|
71
|
+
fog-json (~> 1.0)
|
72
|
+
fog-xml (~> 0.1)
|
73
|
+
fog-profitbricks (0.0.3)
|
74
|
+
fog-core
|
75
|
+
fog-xml
|
76
|
+
nokogiri
|
77
|
+
fog-radosgw (0.0.4)
|
78
|
+
fog-core (>= 1.21.0)
|
79
|
+
fog-json
|
80
|
+
fog-xml (>= 0.0.1)
|
81
|
+
fog-riakcs (0.1.0)
|
82
|
+
fog-core
|
83
|
+
fog-json
|
84
|
+
fog-xml
|
85
|
+
fog-sakuracloud (1.0.1)
|
86
|
+
fog-core
|
87
|
+
fog-json
|
88
|
+
fog-serverlove (0.1.2)
|
89
|
+
fog-core
|
90
|
+
fog-json
|
91
|
+
fog-softlayer (0.4.6)
|
92
|
+
fog-core
|
93
|
+
fog-json
|
94
|
+
fog-storm_on_demand (0.1.1)
|
95
|
+
fog-core
|
96
|
+
fog-json
|
97
|
+
fog-terremark (0.1.0)
|
98
|
+
fog-core
|
99
|
+
fog-xml
|
100
|
+
fog-vmfusion (0.1.0)
|
101
|
+
fission
|
102
|
+
fog-core
|
103
|
+
fog-voxel (0.1.0)
|
104
|
+
fog-core
|
105
|
+
fog-xml
|
106
|
+
fog-xml (0.1.2)
|
107
|
+
fog-core
|
108
|
+
nokogiri (~> 1.5, >= 1.5.11)
|
109
|
+
formatador (0.2.5)
|
110
|
+
inflecto (0.0.2)
|
111
|
+
ipaddress (0.8.0)
|
112
|
+
mime-types (2.6.1)
|
113
|
+
mini_portile (0.6.2)
|
114
|
+
multi_json (1.11.0)
|
115
|
+
net-scp (1.2.1)
|
116
|
+
net-ssh (>= 2.6.5)
|
117
|
+
net-ssh (2.9.2)
|
118
|
+
nokogiri (1.6.6.2)
|
119
|
+
mini_portile (~> 0.6.0)
|
120
|
+
rake (10.4.2)
|
121
|
+
rspec (3.2.0)
|
122
|
+
rspec-core (~> 3.2.0)
|
123
|
+
rspec-expectations (~> 3.2.0)
|
124
|
+
rspec-mocks (~> 3.2.0)
|
125
|
+
rspec-core (3.2.3)
|
126
|
+
rspec-support (~> 3.2.0)
|
127
|
+
rspec-expectations (3.2.1)
|
128
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
129
|
+
rspec-support (~> 3.2.0)
|
130
|
+
rspec-mocks (3.2.1)
|
131
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
132
|
+
rspec-support (~> 3.2.0)
|
133
|
+
rspec-support (3.2.2)
|
134
|
+
|
135
|
+
PLATFORMS
|
136
|
+
ruby
|
137
|
+
|
138
|
+
DEPENDENCIES
|
139
|
+
bundler (~> 1.7)
|
140
|
+
egon!
|
141
|
+
fog (~> 1.31.0)
|
142
|
+
net-ssh (~> 2.9.2)
|
143
|
+
rake (~> 10.0)
|
144
|
+
rspec (~> 3.2.0)
|
data/bin/initialize_overcloud.sh
CHANGED
@@ -1,17 +1,56 @@
|
|
1
1
|
#!/bin/bash
|
2
2
|
|
3
|
+
OVERCLOUD_NAME=${1:-overcloud}
|
4
|
+
TEMPLATE_DIR=`mktemp -d`
|
5
|
+
DEFAULT_PARAMETERS=overcloud-resource-registry-puppet.yaml
|
6
|
+
USER_PARAMETERS=environments/deployment_parameters.yaml
|
7
|
+
|
3
8
|
source /home/stack/stackrc
|
4
|
-
source /home/stack/tripleo-overcloud-passwords
|
5
9
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
10
|
+
cd $TEMPLATE_DIR
|
11
|
+
swift download overcloud $DEFAULT_PARAMETERS
|
12
|
+
swift download overcloud $USER_PARAMETERS
|
13
|
+
|
14
|
+
function parameter_value_from_file {
|
15
|
+
PARAM=$1
|
16
|
+
FILE=$2
|
17
|
+
PARAM_GREP="^ ${PARAM}: "
|
18
|
+
PARAM_VALUE_UNPARSED=`grep "$PARAM_GREP" $FILE`
|
19
|
+
PARAM_VALUE=${PARAM_VALUE_UNPARSED#*:}
|
20
|
+
echo $PARAM_VALUE
|
21
|
+
}
|
22
|
+
|
23
|
+
function parameter_value {
|
24
|
+
PARAM=$1
|
25
|
+
PARAM_VALUE=`parameter_value_from_file $PARAM $TEMPLATE_DIR/$USER_PARAMETERS`
|
26
|
+
|
27
|
+
if [ -z "$PARAM_VALUE" ]; then
|
28
|
+
PARAM_VALUE=`parameter_value_from_file $PARAM $TEMPLATE_DIR/$DEFAULT_PARAMETERS`
|
29
|
+
fi
|
30
|
+
|
31
|
+
echo $PARAM_VALUE
|
32
|
+
}
|
33
|
+
|
34
|
+
KEYSTONE_IP=`heat output-show $OVERCLOUD_NAME KeystoneAdminVip | tr -d '"'`
|
35
|
+
PUBLIC_IP=`heat output-show $OVERCLOUD_NAME PublicVip | tr -d '"'`
|
36
|
+
KEYSTONE_URL=`heat output-show $OVERCLOUD_NAME KeystoneURL`
|
37
|
+
OVERCLOUD_IP=`python -c "from six.moves.urllib.parse import urlparse; print urlparse($KEYSTONE_URL).hostname"`
|
38
|
+
OVERCLOUD_ENDPOINT=`echo $KEYSTONE_URL | tr -d '"'`
|
11
39
|
|
12
40
|
# set it to the same as overcloud_ip if empty
|
13
41
|
[ -z "$KEYSTONE_IP" ] && KEYSTONE_IP=$OVERCLOUD_IP
|
14
42
|
|
43
|
+
# get service passwords
|
44
|
+
OVERCLOUD_ADMIN_PASSWORD=`parameter_value AdminPassword`
|
45
|
+
OVERCLOUD_ADMIN_TOKEN=`parameter_value AdminToken`
|
46
|
+
OVERCLOUD_CEILOMETER_PASSWORD=`parameter_value CeilometerPassword`
|
47
|
+
OVERCLOUD_CINDER_PASSWORD=`parameter_value CinderPassword`
|
48
|
+
OVERCLOUD_GLANCE_PASSWORD=`parameter_value GlancePassword`
|
49
|
+
OVERCLOUD_HEAT_PASSWORD=`parameter_value HeatPassword`
|
50
|
+
OVERCLOUD_NEUTRON_PASSWORD=`parameter_value NeutronPassword`
|
51
|
+
OVERCLOUD_NOVA_PASSWORD=`parameter_value NovaPassword`
|
52
|
+
OVERCLOUD_SWIFT_PASSWORD=`parameter_value SwiftPassword`
|
53
|
+
|
15
54
|
# Write overcloudrc
|
16
55
|
su - stack -c cat > /home/stack/overcloudrc << EOF
|
17
56
|
export NOVA_VERSION=1.1
|
@@ -50,7 +89,6 @@ cat > $ENDPOINTS_FILE << EOF
|
|
50
89
|
"heat": {"password": "$OVERCLOUD_HEAT_PASSWORD"},
|
51
90
|
"neutron": {"password": "$OVERCLOUD_NEUTRON_PASSWORD"},
|
52
91
|
"nova": {"password": "$OVERCLOUD_NOVA_PASSWORD"},
|
53
|
-
"novav3": {"password": "$OVERCLOUD_NOVA_PASSWORD"},
|
54
92
|
"swift": {"password": "$OVERCLOUD_SWIFT_PASSWORD"},
|
55
93
|
"horizon": {
|
56
94
|
"port": "80",
|
@@ -62,4 +100,7 @@ EOF
|
|
62
100
|
|
63
101
|
# set up the endpoints
|
64
102
|
setup-endpoints -s $ENDPOINTS_FILE -r regionOne
|
103
|
+
|
104
|
+
# cleanup
|
65
105
|
rm -f $ENDPOINTS_FILE
|
106
|
+
rm -rf $TEMPLATE_DIR
|
@@ -3,5 +3,5 @@ require 'egon/undercloud/commands'
|
|
3
3
|
require 'egon/undercloud/installer'
|
4
4
|
|
5
5
|
installer = Egon::Undercloud::Installer.new
|
6
|
-
installer.install(Egon::Undercloud::Commands.
|
6
|
+
installer.install(Egon::Undercloud::Commands.OSP8_no_registration)
|
7
7
|
installer.check_ports
|
@@ -15,7 +15,7 @@ SATELLITE_ACTIVATION_KEY = ARGV[5]
|
|
15
15
|
|
16
16
|
connection = Egon::Undercloud::SSHConnection.new(SSH_HOST, SSH_USER, SSH_PASSWORD)
|
17
17
|
installer = Egon::Undercloud::Installer.new(connection)
|
18
|
-
installer.install(Egon::Undercloud::Commands.
|
18
|
+
installer.install(Egon::Undercloud::Commands.OSP8_satellite(SATELLITE_URL, SATELLITE_ORG, SATELLITE_ACTIVATION_KEY))
|
19
19
|
while !installer.completed?
|
20
20
|
sleep 1
|
21
21
|
end
|
@@ -13,7 +13,7 @@ RHSM_POOL_ID = ARGV[5]
|
|
13
13
|
|
14
14
|
connection = Egon::Undercloud::SSHConnection.new(SSH_HOST, SSH_USER, SSH_PASSWORD)
|
15
15
|
installer = Egon::Undercloud::Installer.new(connection)
|
16
|
-
installer.install(Egon::Undercloud::Commands.
|
16
|
+
installer.install(Egon::Undercloud::Commands.OSP8_vanilla_rhel(RHSM_USER, RHSM_PASSWORD, RHSM_POOL_ID))
|
17
17
|
while !installer.completed?
|
18
18
|
sleep 1
|
19
19
|
end
|
data/egon.gemspec
CHANGED
@@ -24,7 +24,7 @@ Gem::Specification.new do |s|
|
|
24
24
|
|
25
25
|
s.add_development_dependency "bundler", "~> 1.7"
|
26
26
|
s.add_development_dependency "rake", "~> 10.0"
|
27
|
-
s.add_development_dependency "fog", "~> 1.
|
27
|
+
s.add_development_dependency "fog", "~> 1.36.0"
|
28
28
|
s.add_development_dependency "net-ssh", "~> 2.9.2"
|
29
29
|
s.add_development_dependency "rspec", "~> 3.2.0"
|
30
30
|
end
|
@@ -1,81 +1,157 @@
|
|
1
1
|
module Overcloud
|
2
2
|
module Deployment
|
3
|
+
|
4
|
+
# BASE PLAN ACTIONS
|
5
|
+
|
6
|
+
def list_plans
|
7
|
+
uri = "#{base_tripleo_api_url}/plans"
|
8
|
+
response = Fog::Core::Connection.new(uri, false).request({
|
9
|
+
:expects => 200,
|
10
|
+
:headers => {'Content-Type' => 'application/json',
|
11
|
+
'Accept' => 'application/json',
|
12
|
+
'X-Auth-Token' => auth_token},
|
13
|
+
:method => 'GET'
|
14
|
+
})
|
15
|
+
body = Fog::JSON.decode(response.body)
|
16
|
+
body['plans']
|
17
|
+
end
|
3
18
|
|
4
19
|
def get_plan(plan_name)
|
5
|
-
|
20
|
+
uri = "#{base_tripleo_api_url}/plans/#{plan_name}"
|
21
|
+
response = Fog::Core::Connection.new(uri, false).request({
|
22
|
+
:expects => 200,
|
23
|
+
:headers => {'Content-Type' => 'application/json',
|
24
|
+
'Accept' => 'application/json',
|
25
|
+
'X-Auth-Token' => auth_token},
|
26
|
+
:method => 'GET'
|
27
|
+
})
|
28
|
+
body = Fog::JSON.decode(response.body)
|
29
|
+
body['plan']
|
30
|
+
end
|
31
|
+
|
32
|
+
def deploy_plan(plan_name)
|
33
|
+
plan = get_plan(plan_name)
|
34
|
+
|
35
|
+
# ensure that nodes are in correct state
|
36
|
+
for node in list_nodes
|
37
|
+
node.set_provision_state('provide') if node.provision_state == 'manageable'
|
38
|
+
end
|
39
|
+
|
40
|
+
uri = "#{base_tripleo_api_url}/plans/#{plan_name}/deploy"
|
41
|
+
response = Fog::Core::Connection.new(uri, false).request({
|
42
|
+
:expects => 202,
|
43
|
+
:headers => {'Content-Type' => 'application/json',
|
44
|
+
'Accept' => 'application/json',
|
45
|
+
'X-Auth-Token' => auth_token},
|
46
|
+
:method => 'PUT'
|
47
|
+
})
|
48
|
+
end
|
49
|
+
|
50
|
+
## PLAN PARAMETER METHODS
|
51
|
+
|
52
|
+
def get_plan_parameters(plan_name)
|
53
|
+
uri = "#{base_tripleo_api_url}/plans/#{plan_name}/parameters"
|
54
|
+
response = Fog::Core::Connection.new(uri, false).request({
|
55
|
+
:expects => 200,
|
56
|
+
:headers => {'Content-Type' => 'application/json',
|
57
|
+
'Accept' => 'application/json',
|
58
|
+
'X-Auth-Token' => auth_token},
|
59
|
+
:method => 'GET',
|
60
|
+
:read_timeout => 360,
|
61
|
+
})
|
62
|
+
body = Fog::JSON.decode(response.body)
|
63
|
+
body['parameters']['Parameters']
|
6
64
|
end
|
7
65
|
|
8
66
|
def get_plan_parameter_value(plan_name, parameter_name)
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
param["value"]
|
67
|
+
parameters = get_plan_parameters(plan_name)
|
68
|
+
if parameters.key?(parameter_name)
|
69
|
+
parameters[parameter_name]["Default"]
|
13
70
|
else
|
14
71
|
nil
|
15
72
|
end
|
16
73
|
end
|
17
74
|
|
18
75
|
def edit_plan_parameters(plan_name, parameters)
|
19
|
-
|
76
|
+
uri = "#{base_tripleo_api_url}/plans/#{plan_name}/parameters"
|
77
|
+
response = Fog::Core::Connection.new(uri, false).request({
|
78
|
+
:expects => 200,
|
79
|
+
:headers => {'Content-Type' => 'application/json',
|
80
|
+
'Accept' => 'application/json',
|
81
|
+
'X-Auth-Token' => auth_token},
|
82
|
+
:method => 'PATCH',
|
83
|
+
:body => Fog::JSON.encode(parameters),
|
84
|
+
:read_timeout => 360,
|
85
|
+
:write_timeout => 360,
|
86
|
+
})
|
20
87
|
end
|
21
88
|
|
22
89
|
def edit_plan_deployment_role_count(plan_name, role_name, count)
|
23
|
-
|
24
|
-
edit_plan_parameters(plan_name,
|
90
|
+
parameters = {role_name + "Count" => count.to_s}
|
91
|
+
edit_plan_parameters(plan_name, parameters)
|
25
92
|
end
|
26
93
|
|
27
|
-
def
|
28
|
-
|
29
|
-
|
94
|
+
def edit_plan_deployment_role_flavor(plan_name, role_name, flavor_name)
|
95
|
+
if role_name == 'Controller'
|
96
|
+
flavor_parameter = 'OvercloudControlFlavor'
|
97
|
+
else
|
98
|
+
flavor_parameter = 'Overcloud' + role_name + 'Flavor'
|
99
|
+
end
|
100
|
+
parameters = {flavor_parameter => flavor_name}
|
101
|
+
edit_plan_parameters(plan_name, parameters)
|
30
102
|
end
|
31
103
|
|
32
|
-
|
33
|
-
|
34
|
-
|
104
|
+
## PLAN ENVIRONMENT ACTIONS
|
105
|
+
|
106
|
+
def get_plan_environments(plan_name)
|
107
|
+
uri = "#{base_tripleo_api_url}/plans/#{plan_name}/environments"
|
108
|
+
response = Fog::Core::Connection.new(uri, false).request({
|
109
|
+
:expects => 200,
|
110
|
+
:headers => {'Content-Type' => 'application/json',
|
111
|
+
'Accept' => 'application/json',
|
112
|
+
'X-Auth-Token' => auth_token},
|
113
|
+
:method => 'GET',
|
114
|
+
:read_timeout => 360,
|
115
|
+
})
|
116
|
+
body = Fog::JSON.decode(response.body)
|
117
|
+
body['environments']
|
35
118
|
end
|
36
119
|
|
37
|
-
def
|
38
|
-
|
120
|
+
def edit_plan_environments(plan_name, environments)
|
121
|
+
uri = "#{base_tripleo_api_url}/plans/#{plan_name}/environments"
|
122
|
+
response = Fog::Core::Connection.new(uri, false).request({
|
123
|
+
:expects => 200,
|
124
|
+
:headers => {'Content-Type' => 'application/json',
|
125
|
+
'Accept' => 'application/json',
|
126
|
+
'X-Auth-Token' => auth_token},
|
127
|
+
:method => 'PATCH',
|
128
|
+
:body => Fog::JSON.encode(environments),
|
129
|
+
:read_timeout => 360,
|
130
|
+
:write_timeout => 360,
|
131
|
+
})
|
132
|
+
end
|
39
133
|
|
40
|
-
|
41
|
-
for node in list_nodes
|
42
|
-
node.set_provision_state('provide') if node.provision_state == 'manageable'
|
43
|
-
end
|
134
|
+
## MISCELLANEOUS PLAN ACTIONS
|
44
135
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
flavor_parameter_value = get_plan_parameter_value(plan_name, flavor_parameter_name)
|
50
|
-
if flavor_parameter_value.to_s == 'baremetal'
|
51
|
-
edit_plan_deployment_role_count(plan_name, role.name, 0)
|
52
|
-
edit_plan_deployment_role_flavor(plan_name, role.name, default_flavor.name)
|
53
|
-
end
|
54
|
-
end
|
136
|
+
def get_plan_deployment_roles(plan_name)
|
137
|
+
# temporarily hard-coded until API adds role function
|
138
|
+
return ['Controller', 'Compute', 'BlockStorage', 'ObjectStorage',
|
139
|
+
'CephStorage']
|
55
140
|
|
56
|
-
#
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
stack_parameters = {
|
68
|
-
:stack_name => plan.name,
|
69
|
-
:template => plan.master_template,
|
70
|
-
:environment => plan.environment,
|
71
|
-
:files => templates,
|
72
|
-
:password => @password,
|
73
|
-
:timeout_mins => 60,
|
74
|
-
:disable_rollback => true
|
75
|
-
}
|
76
|
-
service('Orchestration').stacks.new.save(stack_parameters)
|
141
|
+
#uri = "#{base_tripleo_api_url}/plans/#{plan_name}/roles"
|
142
|
+
#response = Fog::Core::Connection.new(uri, false).request({
|
143
|
+
# :expects => 200,
|
144
|
+
# :headers => {'Content-Type' => 'application/json',
|
145
|
+
# 'Accept' => 'application/json',
|
146
|
+
# 'X-Auth-Token' => auth_token},
|
147
|
+
# :method => 'GET'
|
148
|
+
# })
|
149
|
+
#body = Fog::JSON.decode(response.body)
|
150
|
+
#body['roles']
|
77
151
|
end
|
78
152
|
|
153
|
+
## HEAT ACTIONS
|
154
|
+
|
79
155
|
def list_stacks
|
80
156
|
service('Orchestration').stacks.all
|
81
157
|
end
|
@@ -83,6 +159,16 @@ module Overcloud
|
|
83
159
|
def get_stack_by_name(stack_name)
|
84
160
|
list_stacks.find{|s| s.stack_name == stack_name}
|
85
161
|
end
|
86
|
-
|
162
|
+
|
163
|
+
def delete_stack(overcloud)
|
164
|
+
service('Orchestration').delete_stack(overcloud)
|
165
|
+
end
|
166
|
+
|
167
|
+
private
|
168
|
+
|
169
|
+
def base_tripleo_api_url
|
170
|
+
return "http://#{@auth_url}:8585/v1"
|
171
|
+
end
|
172
|
+
|
87
173
|
end
|
88
174
|
end
|
@@ -9,6 +9,14 @@ module Overcloud
|
|
9
9
|
service('Baremetal').nodes.details
|
10
10
|
end
|
11
11
|
|
12
|
+
def list_ports
|
13
|
+
service('Baremetal').ports.all
|
14
|
+
end
|
15
|
+
|
16
|
+
def list_ports_detailed
|
17
|
+
service('Baremetal').ports.details
|
18
|
+
end
|
19
|
+
|
12
20
|
def get_node(node_id)
|
13
21
|
service('Baremetal').nodes.find_by_uuid(node_id)
|
14
22
|
end
|
@@ -77,7 +85,22 @@ module Overcloud
|
|
77
85
|
end
|
78
86
|
|
79
87
|
def delete_node(node_id)
|
80
|
-
|
88
|
+
begin
|
89
|
+
node = get_node(node_id)
|
90
|
+
if node.power_state == 'power on' && node.provision_state != 'active'
|
91
|
+
node.set_power_state('power off')
|
92
|
+
retries = 15
|
93
|
+
while retries > 0 && node.power_state != 'power off' do
|
94
|
+
sleep(2)
|
95
|
+
retries -= 1
|
96
|
+
end
|
97
|
+
end
|
98
|
+
service('Baremetal').nodes.destroy(node_id)
|
99
|
+
rescue Fog::Compute::OpenStack::NotFound => e
|
100
|
+
"Node Not Found"
|
101
|
+
rescue Excon::Errors::Conflict, Excon::Errors::BadRequest => e
|
102
|
+
JSON.parse(JSON.parse(e.response.body)["error_message"])["faultstring"].split("\n").first
|
103
|
+
end
|
81
104
|
end
|
82
105
|
|
83
106
|
## THESE METHODS ARE TEMPORARY UNTIL IRONIC-DISCOVERD IS ADDED TO
|
@@ -85,7 +108,6 @@ module Overcloud
|
|
85
108
|
|
86
109
|
def introspect_node(node_uuid)
|
87
110
|
uri = "http://#{@auth_url}:5050/v1/introspection/#{node_uuid}"
|
88
|
-
auth_token = service('Baremetal').instance_variable_get(:@auth_token)
|
89
111
|
response = Fog::Core::Connection.new(uri, false).request({
|
90
112
|
:expects => 202,
|
91
113
|
:headers => {'Content-Type' => 'application/json',
|
@@ -97,7 +119,6 @@ module Overcloud
|
|
97
119
|
|
98
120
|
def introspect_node_status(node_uuid)
|
99
121
|
uri = "http://#{@auth_url}:5050/v1/introspection/#{node_uuid}"
|
100
|
-
auth_token = service('Baremetal').instance_variable_get(:@auth_token)
|
101
122
|
response = Fog::Core::Connection.new(uri, false).request({
|
102
123
|
:expects => 200,
|
103
124
|
:headers => {'Content-Type' => 'application/json',
|
@@ -1,6 +1,5 @@
|
|
1
1
|
require 'fog'
|
2
2
|
require_relative 'undercloud_handle/deployment'
|
3
|
-
require_relative 'undercloud_handle/deployment_role'
|
4
3
|
require_relative 'undercloud_handle/flavor'
|
5
4
|
require_relative 'undercloud_handle/image'
|
6
5
|
require_relative 'undercloud_handle/node'
|
@@ -9,7 +8,6 @@ module Overcloud
|
|
9
8
|
class UndercloudHandle
|
10
9
|
|
11
10
|
include Overcloud::Deployment
|
12
|
-
include Overcloud::DeploymentRole
|
13
11
|
include Overcloud::Flavor
|
14
12
|
include Overcloud::Image
|
15
13
|
include Overcloud::Node
|
@@ -37,6 +35,10 @@ module Overcloud
|
|
37
35
|
end
|
38
36
|
return Fog.const_get(service_name).new(fog_parameters)
|
39
37
|
end
|
40
|
-
|
38
|
+
|
39
|
+
def auth_token
|
40
|
+
service('Baremetal').instance_variable_get(:@auth_token)
|
41
|
+
end
|
42
|
+
|
41
43
|
end
|
42
44
|
end
|
@@ -3,12 +3,14 @@ module Egon
|
|
3
3
|
module Undercloud
|
4
4
|
class Commands
|
5
5
|
|
6
|
+
## OSP7
|
7
|
+
|
6
8
|
def self.OSP7_satellite(satellite_url, org, activation_key)
|
7
9
|
return "
|
8
10
|
curl -k -O #{satellite_url}/pub/katello-ca-consumer-latest.noarch.rpm
|
9
11
|
sudo yum install -y katello-ca-consumer-latest.noarch.rpm
|
10
12
|
sudo subscription-manager register --org=\"#{org}\" --activationkey=\"#{activation_key}\"
|
11
|
-
#{self.
|
13
|
+
#{self.OSP7_no_registration}"
|
12
14
|
end
|
13
15
|
|
14
16
|
def self.OSP7_vanilla_rhel(rhsm_user, rhsm_password, rhsm_pool_id)
|
@@ -34,7 +36,7 @@ module Egon
|
|
34
36
|
return OSP7_COMMON
|
35
37
|
end
|
36
38
|
|
37
|
-
|
39
|
+
POST_INSTALL_7 = "
|
38
40
|
source ~/stackrc
|
39
41
|
source ~/tripleo-undercloud-passwords
|
40
42
|
|
@@ -235,7 +237,109 @@ module Egon
|
|
235
237
|
sudo chown $USER: ~/tripleo-undercloud-passwords
|
236
238
|
sudo cp /root/stackrc ~
|
237
239
|
sudo chown $USER: ~/stackrc
|
238
|
-
#{
|
240
|
+
#{POST_INSTALL_7}"
|
241
|
+
|
242
|
+
## OSP8
|
243
|
+
|
244
|
+
def self.OSP8_satellite(satellite_url, org, activation_key)
|
245
|
+
return "
|
246
|
+
curl -k -O #{satellite_url}/pub/katello-ca-consumer-latest.noarch.rpm
|
247
|
+
sudo yum install -y katello-ca-consumer-latest.noarch.rpm
|
248
|
+
sudo subscription-manager register --org=\"#{org}\" --activationkey=\"#{activation_key}\"
|
249
|
+
#{self.OSP8_no_registration}"
|
250
|
+
end
|
251
|
+
|
252
|
+
def self.OSP8_vanilla_rhel(rhsm_user, rhsm_password, rhsm_pool_id)
|
253
|
+
return "
|
254
|
+
sudo subscription-manager register --force --username=\"#{rhsm_user}\" --password=\"#{rhsm_password}\"
|
255
|
+
sudo subscription-manager attach --pool=\"#{rhsm_pool_id}\"
|
256
|
+
sudo subscription-manager repos --enable=rhel-7-server-rpms \
|
257
|
+
--enable=rhel-7-server-optional-rpms --enable=rhel-7-server-extras-rpms \
|
258
|
+
--enable=rhel-7-server-openstack-6.0-rpms
|
259
|
+
#{self.OSP8_no_registration}"
|
260
|
+
end
|
261
|
+
|
262
|
+
def self.OSP8_no_registration
|
263
|
+
return "
|
264
|
+
sudo yum install -y python-rdomanager-oscplugin
|
265
|
+
if [ ! -f ~/undercloud.conf ]; then
|
266
|
+
cp -f /usr/share/instack-undercloud/undercloud.conf.sample ~/undercloud.conf;
|
267
|
+
sed -i -- 's/#store_events = false/store_events = true/g' ~/undercloud.conf
|
268
|
+
fi
|
269
|
+
#{self.OSP8_no_registration_no_packages}"
|
270
|
+
end
|
271
|
+
|
272
|
+
def self.OSP8_no_registration_no_packages
|
273
|
+
return OSP8_COMMON
|
274
|
+
end
|
275
|
+
|
276
|
+
POST_INSTALL_8 = "
|
277
|
+
sudo setenforce permissive
|
278
|
+
source ~/stackrc
|
279
|
+
|
280
|
+
sudo yum install -y rhosp-director-images
|
281
|
+
cd /usr/share/rhosp-director-images
|
282
|
+
sudo tar xf ironic-python-agent.tar
|
283
|
+
sudo tar xf overcloud-full.tar
|
284
|
+
openstack overcloud image upload
|
285
|
+
cd ~
|
286
|
+
|
287
|
+
SUBNET_ID=$(neutron subnet-show '' | awk '$2==\"id\" {print $4}')
|
288
|
+
neutron subnet-update $SUBNET_ID --dns-nameserver 192.168.122.1
|
289
|
+
|
290
|
+
OS_AUTH_URL_ESC=$(sed 's/\\\//\\\\\\//g' <<<\"$OS_AUTH_URL\")
|
291
|
+
sudo yum install -y openstack-tripleo-api
|
292
|
+
sudo sed -i -- \"s/#auth_strategy = keystone/auth_strategy = noauth/g\" /etc/tripleo/tripleo.conf
|
293
|
+
sudo sed -i -- \"s/#password = <None>/password = $OS_PASSWORD/g\" /etc/tripleo/tripleo.conf
|
294
|
+
sudo sed -i -- \"s/#auth_url = http:\\/\\/localhost:35357\\/v2.0/auth_url = $OS_AUTH_URL_ESC/g\" /etc/tripleo/tripleo.conf
|
295
|
+
sudo sed -i -- \"s/#identity_uri = <None>/identity_uri = $OS_AUTH_URL_ESC/g\" /etc/tripleo/tripleo.conf
|
296
|
+
sudo sed -i -- \"s/#admin_user = <None>/admin_user = admin/g\" /etc/tripleo/tripleo.conf
|
297
|
+
sudo sed -i -- \"s/#admin_password = <None>/admin_password = $OS_PASSWORD/g\" /etc/tripleo/tripleo.conf
|
298
|
+
sudo service openstack-tripleo-api restart
|
299
|
+
sudo systemctl enable openstack-tripleo-api
|
300
|
+
sudo sed -i -- \"s/max_json_body_size = 1048576/max_json_body_size = 2000000/g\" /etc/heat/heat.conf
|
301
|
+
sudo service openstack-heat-api restart
|
302
|
+
sudo service openstack-heat-api-cfn restart
|
303
|
+
sudo service openstack-heat-engine restart
|
304
|
+
|
305
|
+
if ! [ $(swift list | grep overcloud) ]; then
|
306
|
+
|
307
|
+
cp -r /usr/share/openstack-tripleo-heat-templates .
|
308
|
+
cp /usr/share/tripleo-api/templates/capabilities-map.yaml openstack-tripleo-heat-templates/.
|
309
|
+
|
310
|
+
echo ' BlockStorageImage: overcloud-full' >> openstack-tripleo-heat-templates/overcloud-resource-registry-puppet.yaml
|
311
|
+
echo ' CephStorageImage: overcloud-full' >> openstack-tripleo-heat-templates/overcloud-resource-registry-puppet.yaml
|
312
|
+
echo ' SwiftStorageImage: overcloud-full' >> openstack-tripleo-heat-templates/overcloud-resource-registry-puppet.yaml
|
313
|
+
echo ' controllerImage: overcloud-full' >> openstack-tripleo-heat-templates/overcloud-resource-registry-puppet.yaml
|
314
|
+
echo ' NovaImage: overcloud-full' >> openstack-tripleo-heat-templates/overcloud-resource-registry-puppet.yaml
|
315
|
+
echo ' CinderPassword: Ma3kfBHqB8FDb2hgJa3sPUAzh' >> openstack-tripleo-heat-templates/overcloud-resource-registry-puppet.yaml
|
316
|
+
echo ' GlancePassword: EBNnAsWxuzAHfqG8trjjMDsCu' >> openstack-tripleo-heat-templates/overcloud-resource-registry-puppet.yaml
|
317
|
+
echo ' SwiftPassword: KfqyTxGtQ9y7P6yCK2m7n2xMz' >> openstack-tripleo-heat-templates/overcloud-resource-registry-puppet.yaml
|
318
|
+
echo ' NeutronMetadataProxySharedSecret: A2kEkckqfAzxcdVEJtnWj4hGP' >> openstack-tripleo-heat-templates/overcloud-resource-registry-puppet.yaml
|
319
|
+
echo ' HeatPassword: BEhHu9UhKd4ZnQwmtCUFsZrh4' >> openstack-tripleo-heat-templates/overcloud-resource-registry-puppet.yaml
|
320
|
+
echo ' HeatStackDomainAdminPassword: fpRbkRneNJVutk4QqK8xYR3Qm' >> openstack-tripleo-heat-templates/overcloud-resource-registry-puppet.yaml
|
321
|
+
echo ' NeutronPassword: 9n3AfD2b9zfBrmmBHwHyc7TgV' >> openstack-tripleo-heat-templates/overcloud-resource-registry-puppet.yaml
|
322
|
+
echo ' AdminToken: CuVyGZqfwZdbTwUaX9euaPGaA' >> openstack-tripleo-heat-templates/overcloud-resource-registry-puppet.yaml
|
323
|
+
echo ' SwiftHashSuffix: JN273288Xt3JTBqnE8RBsrYze' >> openstack-tripleo-heat-templates/overcloud-resource-registry-puppet.yaml
|
324
|
+
echo ' CeilometerMeteringSecret: Hvkf9Rzz6tHF6UVsErPjCE3uM' >> openstack-tripleo-heat-templates/overcloud-resource-registry-puppet.yaml
|
325
|
+
echo ' SnmpdReadonlyUserPassword: password' >> openstack-tripleo-heat-templates/overcloud-resource-registry-puppet.yaml
|
326
|
+
echo ' CeilometerPassword: 2zgV6yAE2d3JTskTnBUsvzDf4' >> openstack-tripleo-heat-templates/overcloud-resource-registry-puppet.yaml
|
327
|
+
echo ' NovaPassword: QCn7EHTkMMrJHH7Upp6txzUYX' >> openstack-tripleo-heat-templates/overcloud-resource-registry-puppet.yaml
|
328
|
+
echo ' RedisPassword: Rhq8Fd7eEIoPP821Ui' >> openstack-tripleo-heat-templates/overcloud-resource-registry-puppet.yaml
|
329
|
+
echo ' HAProxyStatsPassword: veLYjyhxgs7GtQuKXF' >> openstack-tripleo-heat-templates/overcloud-resource-registry-puppet.yaml
|
330
|
+
|
331
|
+
echo 'parameter_defaults:' >> openstack-tripleo-heat-templates/environments/deployment_parameters.yaml
|
332
|
+
echo ' AdminPassword: changeme' >> openstack-tripleo-heat-templates/environments/deployment_parameters.yaml
|
333
|
+
|
334
|
+
sudo tripleo-plan-create --config-file /etc/tripleo/tripleo.conf
|
335
|
+
fi
|
336
|
+
"
|
337
|
+
|
338
|
+
OSP8_COMMON = "
|
339
|
+
sudo sed -i '$ a\net.ipv4.ip_forward = 1' /etc/sysctl.conf
|
340
|
+
sudo sysctl -p /etc/sysctl.conf
|
341
|
+
openstack undercloud install
|
342
|
+
#{POST_INSTALL_8}"
|
239
343
|
|
240
344
|
end
|
241
345
|
end
|
@@ -54,6 +54,9 @@ module Egon
|
|
54
54
|
|
55
55
|
def check_ports(stringio=nil)
|
56
56
|
# closed ports 5385, 36357
|
57
|
+
address = File.foreach('/home/stack/undercloud.conf')
|
58
|
+
.grep(/^local_ip/).first
|
59
|
+
.match(/(?:[0-9]{1,3}\.){3}[0-9]{1,3}/).to_s
|
57
60
|
ports = [8774, 9292, 8777, 9696, 8004, 5000, 8585, 15672]
|
58
61
|
ports.each do |p|
|
59
62
|
if !@connection.nil?
|
@@ -63,7 +66,7 @@ module Egon
|
|
63
66
|
end
|
64
67
|
else
|
65
68
|
# local check
|
66
|
-
set_failure(true) unless !port_open?(
|
69
|
+
set_failure(true) unless !port_open?(address, p, stringio)
|
67
70
|
end
|
68
71
|
end
|
69
72
|
end
|
data/lib/egon/version.rb
CHANGED
data/pkg/egon-0.0.1.gem
ADDED
Binary file
|
data/pkg/egon-0.0.2.gem
ADDED
Binary file
|
data/pkg/egon-0.1.0.gem
CHANGED
Binary file
|
data/pkg/egon-0.4.3.gem
ADDED
Binary file
|
data/rubygem-egon.spec
CHANGED
@@ -4,8 +4,8 @@
|
|
4
4
|
%global gem_name egon
|
5
5
|
|
6
6
|
Name: %{?scl_prefix}rubygem-%{gem_name}
|
7
|
-
Version: 0.
|
8
|
-
Release:
|
7
|
+
Version: 1.0.0
|
8
|
+
Release: 0%{?dist}
|
9
9
|
Summary: A library on top of Fog that encapsulates TripleO deployment operations
|
10
10
|
Group: Development/Languages
|
11
11
|
License: GPL-3.0+
|
@@ -13,7 +13,7 @@ URL: https://github.com/fusor/egon
|
|
13
13
|
Source0: https://rubygems.org/gems/%{gem_name}-%{version}.gem
|
14
14
|
BuildRequires: %{?scl_prefix}rubygems-devel
|
15
15
|
Requires: %{?scl_prefix}ruby
|
16
|
-
Requires: %{?scl_prefix}rubygem(fog) => 1.
|
16
|
+
Requires: %{?scl_prefix}rubygem(fog) => 1.36.0
|
17
17
|
Requires: %{?scl_prefix}rubygem(net-ssh) => 2.9.2
|
18
18
|
Requires: %{?scl_prefix}rubygem(net-ssh) < 2.10
|
19
19
|
BuildArch: noarch
|
@@ -93,6 +93,9 @@ popd
|
|
93
93
|
%{gem_instdir}/test
|
94
94
|
|
95
95
|
%changelog
|
96
|
+
* Thu Oct 29 2015 Jason Rist <jrist@redhat.com> 0.4.8
|
97
|
+
- bump fog requirement to 1.36.0 to fix uuid bug (jrist@redhat.com)
|
98
|
+
|
96
99
|
* Thu Sep 10 2015 Jason Montleon <jmontleo@redhat.com> 0.4.2-7
|
97
100
|
- gempsec and rpm spec cleanup (jmontleo@redhat.com)
|
98
101
|
|
@@ -1,10 +1,8 @@
|
|
1
1
|
require 'fog'
|
2
2
|
require 'fog/openstack/models/baremetal/nodes'
|
3
3
|
require 'fog/openstack/models/compute/flavors'
|
4
|
-
require 'fog/openstack/models/
|
4
|
+
require 'fog/openstack/models/image_v1/image'
|
5
5
|
require 'fog/openstack/models/orchestration/stacks'
|
6
|
-
require 'fog/openstack/models/planning/plans'
|
7
|
-
require 'fog/openstack/models/planning/role'
|
8
6
|
require './lib/egon/overcloud/undercloud_handle'
|
9
7
|
|
10
8
|
describe "overcloud installation mocked" do
|
@@ -18,12 +16,12 @@ describe "overcloud installation mocked" do
|
|
18
16
|
@undercloud_handle = Overcloud::UndercloudHandle.new(options[:openstack_username], 'xxxxxxx', options[:openstack_auth_url])
|
19
17
|
|
20
18
|
# setup for mock image service
|
21
|
-
image_service = Fog::Image::OpenStack::Mock.new(options)
|
22
|
-
bm_deploy_kernel_image = Fog::Image::OpenStack::Image.new({
|
19
|
+
image_service = Fog::Image::OpenStack::V1::Mock.new(options)
|
20
|
+
bm_deploy_kernel_image = Fog::Image::OpenStack::V1::Image.new({
|
23
21
|
:id => '1',
|
24
22
|
:name => 'bm-deploy-kernel'
|
25
23
|
})
|
26
|
-
bm_deploy_ramdisk_image = Fog::Image::OpenStack::Image.new({
|
24
|
+
bm_deploy_ramdisk_image = Fog::Image::OpenStack::V1::Image.new({
|
27
25
|
:id => '2',
|
28
26
|
:name => 'bm-deploy-ramdisk'
|
29
27
|
})
|
@@ -71,34 +69,14 @@ describe "overcloud installation mocked" do
|
|
71
69
|
allow(compute_service).to receive(:flavors).and_return(flavors)
|
72
70
|
allow(@undercloud_handle).to receive(:service).with('Compute').and_return(compute_service)
|
73
71
|
|
74
|
-
# setup for mock planning service
|
75
|
-
planning_service = Fog::Openstack::Planning::Mock.new(options)
|
76
|
-
plans = Fog::Openstack::Planning::Plans.new
|
77
|
-
overcloud_plan = Fog::Openstack::Planning::Plan.new({
|
78
|
-
:uuid => '1',
|
79
|
-
:name => 'overcloud'
|
80
|
-
})
|
81
|
-
compute_role = Fog::Openstack::Planning::Role.new({
|
82
|
-
:uuid => '1',
|
83
|
-
:name => 'Compute'
|
84
|
-
})
|
85
|
-
controller_role = Fog::Openstack::Planning::Role.new({
|
86
|
-
:uuid => '1',
|
87
|
-
:name => 'Controller'
|
88
|
-
})
|
89
|
-
allow(planning_service).to receive(:roles).and_return([compute_role, controller_role])
|
90
|
-
allow(planning_service).to receive(:plans).and_return(plans)
|
91
|
-
allow(plans).to receive(:find_by_name).and_return(overcloud_plan)
|
92
|
-
allow(@undercloud_handle).to receive(:service).with('Planning').and_return(planning_service)
|
93
|
-
|
94
72
|
# setup for mock orchestration service
|
95
73
|
orchestration_service = Fog::Orchestration::OpenStack::Mock.new(options)
|
96
74
|
stacks = Fog::Orchestration::OpenStack::Stacks.new
|
97
75
|
overcloud_stack = Fog::Orchestration::OpenStack::Stack.new({
|
98
76
|
'id' => '1',
|
99
|
-
'
|
77
|
+
'stack_name' => 'overcloud',
|
100
78
|
})
|
101
|
-
allow(stacks).to receive(:
|
79
|
+
allow(stacks).to receive(:all).and_return([overcloud_stack])
|
102
80
|
allow(orchestration_service).to receive(:stacks).and_return(stacks)
|
103
81
|
allow(@undercloud_handle).to receive(:service).with('Orchestration').and_return(orchestration_service)
|
104
82
|
end
|
@@ -164,16 +142,8 @@ describe "overcloud installation mocked" do
|
|
164
142
|
expect(@undercloud_handle.list_nodes.length).to eq 2
|
165
143
|
end
|
166
144
|
|
167
|
-
it "should be able to list_deployment_roles" do
|
168
|
-
expect(@undercloud_handle.list_deployment_roles.length).to eq 2
|
169
|
-
end
|
170
|
-
|
171
|
-
it "should be able to get_plan" do
|
172
|
-
expect(@undercloud_handle.get_plan('overcloud').uuid).to eq '1'
|
173
|
-
end
|
174
|
-
|
175
145
|
it "should be able to get_stack" do
|
176
|
-
expect(@undercloud_handle.
|
146
|
+
expect(@undercloud_handle.get_stack_by_name('overcloud').id).to eq '1'
|
177
147
|
end
|
178
148
|
end
|
179
149
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: egon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Egon and Fusor team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-05-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - ~>
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 1.
|
47
|
+
version: 1.36.0
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 1.
|
54
|
+
version: 1.36.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: net-ssh
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -92,6 +92,7 @@ extensions: []
|
|
92
92
|
extra_rdoc_files: []
|
93
93
|
files:
|
94
94
|
- Gemfile
|
95
|
+
- Gemfile.lock
|
95
96
|
- LICENSE
|
96
97
|
- README.md
|
97
98
|
- Rakefile
|
@@ -103,7 +104,6 @@ files:
|
|
103
104
|
- lib/egon.rb
|
104
105
|
- lib/egon/overcloud/undercloud_handle.rb
|
105
106
|
- lib/egon/overcloud/undercloud_handle/deployment.rb
|
106
|
-
- lib/egon/overcloud/undercloud_handle/deployment_role.rb
|
107
107
|
- lib/egon/overcloud/undercloud_handle/flavor.rb
|
108
108
|
- lib/egon/overcloud/undercloud_handle/image.rb
|
109
109
|
- lib/egon/overcloud/undercloud_handle/node.rb
|
@@ -112,21 +112,10 @@ files:
|
|
112
112
|
- lib/egon/undercloud/port-check-mixin.rb
|
113
113
|
- lib/egon/undercloud/ssh-connection.rb
|
114
114
|
- lib/egon/version.rb
|
115
|
+
- pkg/egon-0.0.1.gem
|
116
|
+
- pkg/egon-0.0.2.gem
|
115
117
|
- pkg/egon-0.1.0.gem
|
116
|
-
- pkg/egon-0.
|
117
|
-
- pkg/egon-0.3.1.gem
|
118
|
-
- pkg/egon-0.3.2.gem
|
119
|
-
- pkg/egon-0.3.3.gem
|
120
|
-
- pkg/egon-0.3.4.gem
|
121
|
-
- pkg/egon-0.3.5.gem
|
122
|
-
- pkg/egon-0.3.6.gem
|
123
|
-
- pkg/egon-0.4.0.gem
|
124
|
-
- pkg/egon-0.4.1.gem
|
125
|
-
- pkg/egon-0.4.2.gem
|
126
|
-
- pkg/egon-0.4.4.gem
|
127
|
-
- pkg/egon-0.4.5.gem
|
128
|
-
- pkg/egon-0.4.6.gem
|
129
|
-
- pkg/egon-0.4.7.gem
|
118
|
+
- pkg/egon-0.4.3.gem
|
130
119
|
- rubygem-egon.spec
|
131
120
|
- test/test_ssh_connection.rb
|
132
121
|
- test/test_undercloud.rb
|
data/pkg/egon-0.2.0.gem
DELETED
Binary file
|
data/pkg/egon-0.3.1.gem
DELETED
Binary file
|
data/pkg/egon-0.3.2.gem
DELETED
Binary file
|
data/pkg/egon-0.3.3.gem
DELETED
Binary file
|
data/pkg/egon-0.3.4.gem
DELETED
Binary file
|
data/pkg/egon-0.3.5.gem
DELETED
Binary file
|
data/pkg/egon-0.3.6.gem
DELETED
Binary file
|
data/pkg/egon-0.4.0.gem
DELETED
Binary file
|
data/pkg/egon-0.4.1.gem
DELETED
Binary file
|
data/pkg/egon-0.4.2.gem
DELETED
Binary file
|
data/pkg/egon-0.4.4.gem
DELETED
Binary file
|
data/pkg/egon-0.4.5.gem
DELETED
Binary file
|
data/pkg/egon-0.4.6.gem
DELETED
Binary file
|
data/pkg/egon-0.4.7.gem
DELETED
Binary file
|