Move postconfig to deploy command
Change-Id: Ibcedd19002939b647c542c82c862d03cda2d6073
This commit is contained in:
parent
a933eec21d
commit
7b22702074
@ -33,6 +33,8 @@ class TestDeployOvercloud(fakes.TestDeployOvercloud):
|
|||||||
|
|
||||||
self._get_passwords = generate_overcloud_passwords_mock
|
self._get_passwords = generate_overcloud_passwords_mock
|
||||||
|
|
||||||
|
@mock.patch('rdomanager_oscplugin.v1.overcloud_deploy.DeployOvercloud.'
|
||||||
|
'_deploy_postconfig')
|
||||||
@mock.patch('rdomanager_oscplugin.v1.overcloud_deploy.DeployOvercloud.'
|
@mock.patch('rdomanager_oscplugin.v1.overcloud_deploy.DeployOvercloud.'
|
||||||
'_update_nodesjson')
|
'_update_nodesjson')
|
||||||
@mock.patch('rdomanager_oscplugin.utils.generate_overcloud_passwords')
|
@mock.patch('rdomanager_oscplugin.utils.generate_overcloud_passwords')
|
||||||
@ -64,7 +66,8 @@ class TestDeployOvercloud(fakes.TestDeployOvercloud):
|
|||||||
mock_sleep, mock_setup_endpoints,
|
mock_sleep, mock_setup_endpoints,
|
||||||
mock_create_overcloudrc,
|
mock_create_overcloudrc,
|
||||||
mock_generate_overcloud_passwords,
|
mock_generate_overcloud_passwords,
|
||||||
mock_update_nodesjson):
|
mock_update_nodesjson,
|
||||||
|
mock_deploy_postconfig):
|
||||||
|
|
||||||
arglist = ['--use-tripleo-heat-templates', ]
|
arglist = ['--use-tripleo-heat-templates', ]
|
||||||
verifylist = [
|
verifylist = [
|
||||||
@ -114,6 +117,8 @@ class TestDeployOvercloud(fakes.TestDeployOvercloud):
|
|||||||
self.assertEqual(kwargs['environment'], 'env')
|
self.assertEqual(kwargs['environment'], 'env')
|
||||||
self.assertEqual(kwargs['stack_name'], 'overcloud')
|
self.assertEqual(kwargs['stack_name'], 'overcloud')
|
||||||
|
|
||||||
|
@mock.patch('rdomanager_oscplugin.v1.overcloud_deploy.DeployOvercloud.'
|
||||||
|
'_deploy_postconfig')
|
||||||
@mock.patch('rdomanager_oscplugin.v1.overcloud_deploy.DeployOvercloud.'
|
@mock.patch('rdomanager_oscplugin.v1.overcloud_deploy.DeployOvercloud.'
|
||||||
'_update_nodesjson')
|
'_update_nodesjson')
|
||||||
@mock.patch('rdomanager_oscplugin.utils.get_config_value', autospec=True)
|
@mock.patch('rdomanager_oscplugin.utils.get_config_value', autospec=True)
|
||||||
@ -134,7 +139,8 @@ class TestDeployOvercloud(fakes.TestDeployOvercloud):
|
|||||||
mock_get_templte_contents,
|
mock_get_templte_contents,
|
||||||
mock_process_multiple_env,
|
mock_process_multiple_env,
|
||||||
mock_generate_overcloud_passwords,
|
mock_generate_overcloud_passwords,
|
||||||
mock_get_key, mock_update_nodesjson):
|
mock_get_key, mock_update_nodesjson,
|
||||||
|
mock_deploy_postconfig):
|
||||||
|
|
||||||
arglist = ['--plan', 'undercloud', '--output-dir', 'fake']
|
arglist = ['--plan', 'undercloud', '--output-dir', 'fake']
|
||||||
verifylist = [
|
verifylist = [
|
||||||
|
@ -28,7 +28,10 @@ from heatclient.common import template_utils
|
|||||||
from heatclient.exc import HTTPNotFound
|
from heatclient.exc import HTTPNotFound
|
||||||
from openstackclient.common import utils as oscutils
|
from openstackclient.common import utils as oscutils
|
||||||
from openstackclient.i18n import _
|
from openstackclient.i18n import _
|
||||||
|
from os_cloud_config import keystone
|
||||||
from os_cloud_config import keystone_pki
|
from os_cloud_config import keystone_pki
|
||||||
|
from os_cloud_config import neutron
|
||||||
|
from os_cloud_config.utils import clients
|
||||||
|
|
||||||
from rdomanager_oscplugin import utils
|
from rdomanager_oscplugin import utils
|
||||||
|
|
||||||
@ -470,6 +473,75 @@ class DeployOvercloud(command.Command):
|
|||||||
with open("instackenv.json", "w") as f:
|
with open("instackenv.json", "w") as f:
|
||||||
json.dump(instack_env, f)
|
json.dump(instack_env, f)
|
||||||
|
|
||||||
|
def _deploy_postconfig(self, stack, parsed_args):
|
||||||
|
self.log.debug("_deploy_postconfig(%s)" % parsed_args)
|
||||||
|
|
||||||
|
passwords = self.passwords
|
||||||
|
|
||||||
|
overcloud_endpoint = self._get_overcloud_endpoint(stack)
|
||||||
|
overcloud_ip = six.moves.urllib.parse.urlparse(
|
||||||
|
overcloud_endpoint).hostname
|
||||||
|
|
||||||
|
utils.remove_known_hosts(overcloud_ip)
|
||||||
|
|
||||||
|
keystone.initialize(
|
||||||
|
overcloud_ip,
|
||||||
|
passwords['OVERCLOUD_ADMIN_TOKEN'],
|
||||||
|
'admin@example.com',
|
||||||
|
passwords['OVERCLOUD_ADMIN_PASSWORD'],
|
||||||
|
user='heat-admin')
|
||||||
|
|
||||||
|
services = {}
|
||||||
|
for service, data in six.iteritems(utils.SERVICE_LIST):
|
||||||
|
service_data = {}
|
||||||
|
password_field = data.get('password_field')
|
||||||
|
if password_field:
|
||||||
|
service_data['password'] = passwords[password_field]
|
||||||
|
services.update({service: service_data})
|
||||||
|
|
||||||
|
keystone_client = clients.get_keystone_client(
|
||||||
|
'admin',
|
||||||
|
passwords['OVERCLOUD_ADMIN_PASSWORD'],
|
||||||
|
'admin',
|
||||||
|
overcloud_endpoint)
|
||||||
|
keystone.setup_endpoints(
|
||||||
|
services,
|
||||||
|
client=keystone_client,
|
||||||
|
os_auth_url=overcloud_endpoint)
|
||||||
|
|
||||||
|
network_description = {
|
||||||
|
"float": {
|
||||||
|
"cidr": parsed_args.network_cidr,
|
||||||
|
"name": "default-net",
|
||||||
|
"nameserver": parsed_args.overcloud_nameserver
|
||||||
|
},
|
||||||
|
"external": {
|
||||||
|
"name": "ext-net",
|
||||||
|
"cidr": parsed_args.floating_id_cidr,
|
||||||
|
"allocation_start": parsed_args.floating_ip_start,
|
||||||
|
"allocation_end": parsed_args.floating_ip_end,
|
||||||
|
"gateway": parsed_args.bm_network_gateway,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
neutron_client = clients.get_neutron_client(
|
||||||
|
'admin',
|
||||||
|
passwords['OVERCLOUD_ADMIN_PASSWORD'],
|
||||||
|
'admin',
|
||||||
|
overcloud_endpoint)
|
||||||
|
neutron.initialize_neutron(
|
||||||
|
network_description,
|
||||||
|
neutron_client=neutron_client,
|
||||||
|
keystone_client=keystone_client,
|
||||||
|
)
|
||||||
|
|
||||||
|
compute_client = clients.get_nova_bm_client(
|
||||||
|
'admin',
|
||||||
|
passwords['OVERCLOUD_ADMIN_PASSWORD'],
|
||||||
|
'admin',
|
||||||
|
overcloud_endpoint)
|
||||||
|
compute_client.flavors.create('m1.demo', 512, 1, 10, 'auto')
|
||||||
|
|
||||||
def get_parser(self, prog_name):
|
def get_parser(self, prog_name):
|
||||||
parser = super(DeployOvercloud, self).get_parser(prog_name)
|
parser = super(DeployOvercloud, self).get_parser(prog_name)
|
||||||
parser.add_argument('--control-scale', type=int, default=1)
|
parser.add_argument('--control-scale', type=int, default=1)
|
||||||
@ -543,6 +615,12 @@ class DeployOvercloud(command.Command):
|
|||||||
help=('Directory containing any extra environment files to pass '
|
help=('Directory containing any extra environment files to pass '
|
||||||
'heat. (Defaults to /etc/tripleo/extra_config.d)')
|
'heat. (Defaults to /etc/tripleo/extra_config.d)')
|
||||||
)
|
)
|
||||||
|
parser.add_argument('--overcloud_nameserver', default='8.8.8.8')
|
||||||
|
parser.add_argument('--floating-id-cidr', default='192.0.2.0/24')
|
||||||
|
parser.add_argument('--floating-ip-start', default='192.0.2.45')
|
||||||
|
parser.add_argument('--floating-ip-end', default='192.0.2.64')
|
||||||
|
parser.add_argument('--bm-network-gateway', default='192.0.2.1')
|
||||||
|
parser.add_argument('--network-cidr', default='10.0.0.0/8')
|
||||||
|
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
@ -553,6 +631,7 @@ class DeployOvercloud(command.Command):
|
|||||||
orchestration_client = clients.rdomanager_oscplugin.orchestration()
|
orchestration_client = clients.rdomanager_oscplugin.orchestration()
|
||||||
|
|
||||||
stack = self._get_stack(orchestration_client)
|
stack = self._get_stack(orchestration_client)
|
||||||
|
stack_create = stack is None
|
||||||
|
|
||||||
self._pre_heat_deploy()
|
self._pre_heat_deploy()
|
||||||
|
|
||||||
@ -569,6 +648,9 @@ class DeployOvercloud(command.Command):
|
|||||||
|
|
||||||
self._update_nodesjson(stack)
|
self._update_nodesjson(stack)
|
||||||
|
|
||||||
|
if stack_create:
|
||||||
|
self._deploy_postconfig(stack, parsed_args)
|
||||||
|
|
||||||
overcloud_endpoint = self._get_overcloud_endpoint(stack)
|
overcloud_endpoint = self._get_overcloud_endpoint(stack)
|
||||||
print("Overcloud Endpoint: {0}".format(overcloud_endpoint))
|
print("Overcloud Endpoint: {0}".format(overcloud_endpoint))
|
||||||
print("Overcloud Deployed")
|
print("Overcloud Deployed")
|
||||||
|
@ -1,112 +0,0 @@
|
|||||||
# Copyright 2015 Red Hat, Inc.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
||||||
# not use this file except in compliance with the License. You may obtain
|
|
||||||
# a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
||||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
||||||
# License for the specific language governing permissions and limitations
|
|
||||||
# under the License.
|
|
||||||
#
|
|
||||||
from __future__ import print_function
|
|
||||||
|
|
||||||
import logging
|
|
||||||
import six
|
|
||||||
|
|
||||||
from cliff import command
|
|
||||||
from openstackclient.i18n import _
|
|
||||||
from os_cloud_config import keystone
|
|
||||||
from os_cloud_config import neutron
|
|
||||||
from os_cloud_config.utils import clients
|
|
||||||
|
|
||||||
from rdomanager_oscplugin import utils
|
|
||||||
|
|
||||||
|
|
||||||
class PostconfigOvercloud(command.Command):
|
|
||||||
"""Complete the configuration of the overcloud"""
|
|
||||||
|
|
||||||
log = logging.getLogger(__name__ + ".PostconfigOvercloud")
|
|
||||||
|
|
||||||
def get_parser(self, prog_name):
|
|
||||||
parser = super(PostconfigOvercloud, self).get_parser(prog_name)
|
|
||||||
|
|
||||||
parser.add_argument('--overcloud_nameserver', default='8.8.8.8')
|
|
||||||
parser.add_argument('--floating-id-cidr', default='192.0.2.0/24')
|
|
||||||
parser.add_argument('--floating-ip-start', default='192.0.2.45')
|
|
||||||
parser.add_argument('--floating-ip-end', default='192.0.2.64')
|
|
||||||
parser.add_argument('--ibm-network-gateway', default='192.0.2.1')
|
|
||||||
parser.add_argument('--network-cidr', default='10.0.0.0/8')
|
|
||||||
parser.add_argument(
|
|
||||||
'overcloud_ip',
|
|
||||||
help=_('The IP address of the Overcloud endpoint')
|
|
||||||
)
|
|
||||||
|
|
||||||
return parser
|
|
||||||
|
|
||||||
def take_action(self, parsed_args):
|
|
||||||
self.log.debug("take_action(%s)" % parsed_args)
|
|
||||||
|
|
||||||
passwords = utils.generate_overcloud_passwords()
|
|
||||||
|
|
||||||
utils.remove_known_hosts(parsed_args.overcloud_ip)
|
|
||||||
|
|
||||||
keystone.initialize(
|
|
||||||
parsed_args.overcloud_ip,
|
|
||||||
passwords['OVERCLOUD_ADMIN_TOKEN'],
|
|
||||||
'admin@example.com',
|
|
||||||
passwords['OVERCLOUD_ADMIN_PASSWORD'],
|
|
||||||
user='heat-admin')
|
|
||||||
|
|
||||||
services = {}
|
|
||||||
for service, data in six.iteritems(utils.SERVICE_LIST):
|
|
||||||
service_data = {}
|
|
||||||
password_field = data.get('password_field')
|
|
||||||
if password_field:
|
|
||||||
service_data['password'] = passwords[password_field]
|
|
||||||
services.update({service: service_data})
|
|
||||||
|
|
||||||
identity_client = self.app.client_manager.identity
|
|
||||||
keystone.setup_endpoints(
|
|
||||||
services,
|
|
||||||
client=identity_client,
|
|
||||||
os_auth_url=self.app.client_manager.auth_ref.auth_url[0])
|
|
||||||
|
|
||||||
network_description = {
|
|
||||||
"float": {
|
|
||||||
"cidr": parsed_args.network_cidr,
|
|
||||||
"name": "default-net",
|
|
||||||
"nameserver": parsed_args.overcloud_nameserver
|
|
||||||
},
|
|
||||||
"external": {
|
|
||||||
"name": "ext-net",
|
|
||||||
"cidr": parsed_args.floating_id_cidr,
|
|
||||||
"allocation_start": parsed_args.floating_ip_start,
|
|
||||||
"allocation_end": parsed_args.floating_ip_end,
|
|
||||||
"gateway": parsed_args.ibm_network_gateway,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# retrieve needed Overcloud clients
|
|
||||||
auth_ref = self.app.client_manager.auth_ref
|
|
||||||
keystone_client = clients.get_keystone_client(
|
|
||||||
auth_ref.username,
|
|
||||||
passwords['OVERCLOUD_ADMIN_PASSWORD'],
|
|
||||||
auth_ref.project_name,
|
|
||||||
auth_ref.auth_url[0])
|
|
||||||
neutron_client = clients.get_neutron_client(
|
|
||||||
auth_ref.username,
|
|
||||||
passwords['OVERCLOUD_ADMIN_PASSWORD'],
|
|
||||||
auth_ref.project_name,
|
|
||||||
auth_ref.auth_url[0])
|
|
||||||
neutron.initialize_neutron(
|
|
||||||
network_description,
|
|
||||||
neutron_client=neutron_client,
|
|
||||||
keystone_client=keystone_client,
|
|
||||||
)
|
|
||||||
|
|
||||||
self.app.client_manager.compute.flavors.create(
|
|
||||||
'm1.demo', 512, 1, 10, 'auto')
|
|
@ -65,7 +65,6 @@ openstack.rdomanager_oscplugin.v1 =
|
|||||||
overcloud_image_build = rdomanager_oscplugin.v1.overcloud_image:BuildOvercloudImage
|
overcloud_image_build = rdomanager_oscplugin.v1.overcloud_image:BuildOvercloudImage
|
||||||
overcloud_image_upload = rdomanager_oscplugin.v1.overcloud_image:UploadOvercloudImage
|
overcloud_image_upload = rdomanager_oscplugin.v1.overcloud_image:UploadOvercloudImage
|
||||||
overcloud_node_delete = rdomanager_oscplugin.v1.overcloud_node:DeleteNode
|
overcloud_node_delete = rdomanager_oscplugin.v1.overcloud_node:DeleteNode
|
||||||
overcloud_postconfig = rdomanager_oscplugin.v1.overcloud_postconfig:PostconfigOvercloud
|
|
||||||
overcloud_update_stack = rdomanager_oscplugin.v1.overcloud_update:UpdateOvercloud
|
overcloud_update_stack = rdomanager_oscplugin.v1.overcloud_update:UpdateOvercloud
|
||||||
overcloud_validate = rdomanager_oscplugin.v1.overcloud_validate:ValidateOvercloud
|
overcloud_validate = rdomanager_oscplugin.v1.overcloud_validate:ValidateOvercloud
|
||||||
undercloud_install = rdomanager_oscplugin.v1.undercloud:InstallPlugin
|
undercloud_install = rdomanager_oscplugin.v1.undercloud:InstallPlugin
|
||||||
|
Loading…
Reference in New Issue
Block a user