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