Bug 1029410

Summary: Can not move an OpenShift role to an host that already contains other OpenShift components.
Product: OpenShift Container Platform Reporter: Johnny Liu <jialiu>
Component: NodeAssignee: Luke Meyer <lmeyer>
Status: CLOSED WONTFIX QA Contact: libra bugs <libra-bugs>
Severity: low Docs Contact:
Priority: low    
Version: 2.0.0CC: bleanhar, libra-onpremise-devel
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2014-05-01 20:42:42 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Johnny Liu 2013-11-12 11:07:31 UTC
Description of problem:
When user want to move a node role to msgserver host, it failed.
And actually this functionality should not be allow, because once move is allowed, that means the node role should be removed from previous host, that will bring a lot of trouble to complete that. So suggest remove "move role" functionality from menu.

$ ./oo-install -e -a
Checking for necessary tools...
...looks good.
Reusing existing installer assets.
Extracting oo-install to temporary directory...
Starting oo-install...

OpenShift Installer
----------------------------------------------------------------------

Welcome to OpenShift.
This installer will guide you through a basic system deployment, based
on one of the scenarios below.

Select from the following installation scenarios.
You can also type '?' for Help or 'q' to Quit.":
1. Install OpenShift Enterprise
2. Add a Node to OpenShift Enterprise
Type a selection and press <return>: 2


Here are the details of your current deployment.

DNS Settings
  * App Domain: my-osebeta.com.cn
  * Register OpenShift components with OpenShift DNS? Yes
  * Component Domain: my-com.com.cn

Role Assignments
+-----------+--------+
| Broker    | broker |
| MsgServer | msg    |
| DBServer  | db     |
| Nodes     | msg    |
|           | node   |
+-----------+--------+

Host Information
+----------+-------------+
| Host     | broker      |
| Roles    | Broker      |
| SSH Host | 10.4.59.164 |
| User     | root        |
| IP Addr  | 10.4.59.164 |
+----------+-------------+
+----------+-----------------+
| Host     | msg             |
| Roles    | MsgServer, Node |
| SSH Host | 10.4.59.156     |
| User     | root            |
| IP Addr  | 10.4.59.156     |
+----------+-----------------+
+----------+-------------+
| Host     | db          |
| Roles    | DBServer    |
| SSH Host | 10.4.59.149 |
| User     | root        |
| IP Addr  | 10.4.59.149 |
+----------+-------------+
+----------+-------------+
| Host     | node        |
| Roles    | Node        |
| SSH Host | 10.4.59.144 |
| User     | root        |
| IP Addr  | 10.4.59.144 |
+----------+-------------+

Do you want to change the deployment info? (y/n/q/?) y

Choose from the following deployment configuration options:
1. Change the DNS configuration
2. Move an OpenShift role to a different host
3. Modify the information for an existing host
4. Add or remove a Node host
5. Finish editing the deployment configuration
Type a selection and press <return>: 2

Which role do you want to move to a different host?:
1. Broker
2. MsgServer
3. DBServer
4. Node
Type a selection and press <return>: 4

Which host should no longer include the role?:
1. msg (MsgServer, Node)
2. node (Node)
Type a selection and press <return>: 1

Select a host to use for this role::
1. broker (Broker)
2. db (DBServer)
3. Create a new host
Type a selection and press <return>: 1

Here are the details of your current deployment.

DNS Settings
  * App Domain: my-osebeta.com.cn
  * Register OpenShift components with OpenShift DNS? Yes
  * Component Domain: my-com.com.cn

Role Assignments
+-----------+--------+
| Broker    | broker |
| MsgServer | msg    |
| DBServer  | db     |
| Nodes     | broker |
|           | node   |
+-----------+--------+

Host Information
+----------+--------------+
| Host     | broker       |
| Roles    | Broker, Node |
| SSH Host | 10.4.59.164  |
| User     | root         |
| IP Addr  | 10.4.59.164  |
+----------+--------------+
+----------+-------------+
| Host     | msg         |
| Roles    | MsgServer   |
| SSH Host | 10.4.59.156 |
| User     | root        |
| IP Addr  | 10.4.59.156 |
+----------+-------------+
+----------+-------------+
| Host     | db          |
| Roles    | DBServer    |
| SSH Host | 10.4.59.149 |
| User     | root        |
| IP Addr  | 10.4.59.149 |
+----------+-------------+
+----------+-------------+
| Host     | node        |
| Roles    | Node        |
| SSH Host | 10.4.59.144 |
| User     | root        |
| IP Addr  | 10.4.59.144 |
+----------+-------------+

Choose from the following deployment configuration options:
1. Change the DNS configuration
2. Move an OpenShift role to a different host
3. Modify the information for an existing host
4. Add or remove a Node host
5. Finish editing the deployment configuration
Type a selection and press <return>: 5


Here is subscription configuration that the installer will use for
this deployment.
+---------+-------+
| Setting | Value |
+---------+-------+
| type    | none  |
+---------+-------+

Do you want to make any changes to the subscription info in the
configuration file? (y/n/q/?) n

Do you want to set any temporary subscription settings for this
installation only? (y/n/q/?) n

These are your current settings for this workflow:

Here are your previous answers to the questions for this workflow.

Target system - [unset]

Do you want to make any changes to your answers? (y/n/q/?) y

From your list of Nodes, which instance would you like to deploy?:
1. broker (Broker, Node)
2. node (Node)
?  1

Do you want to make any changes to your answers? (y/n/q/?) n

Preflight check: verifying system and resource availability.

Checking broker:
* SSH connection succeeded
* Target host is running Red Hat Enterprise Linux
* Located yum

Checking msg:
* SSH connection succeeded
* Target host is running Red Hat Enterprise Linux
* Located yum

Checking db:
* SSH connection succeeded
* Target host is running Red Hat Enterprise Linux
* Located yum

Checking node:
* SSH connection succeeded
* Target host is running Red Hat Enterprise Linux
* Located yum

Deploying workflow 'enterprise_add_node'.
The specified node to be added also contains other OpenShift components.
Nodes can only be added as standalone components on their own systems. Exiting.

Installation completed.
oo-install exited; keeping temporary assets in /tmp/

Version-Release number of selected component (if applicable):
oo-install-ose-2.0b-20131111-2053

How reproducible:
Always

Steps to Reproduce:
1.
2.
3.

Actual results:


Expected results:


Additional info:

Comment 1 Johnny Liu 2013-11-12 11:16:15 UTC
Hmmm, looks like this menu is still useful, when user want to customize roles to separate machines with "-a" option, user must select this "move role" menu.

That means this "move role" menu is available only when move a role to new host, is not proper when move a role to an existing host.

Comment 2 Johnny Liu 2013-11-12 11:22:13 UTC
The wizard should be refined after user select "move role" menu.

Just like this:

Which role do you want to move to a different host?:
1. Broker
2. MsgServer
3. DBServer
4. Node
Type a selection and press <return>: 4

Which host should no longer include the role?:
1. msg (MsgServer, Node)
2. node (Node)
Type a selection and press <return>: 1

Select a host to use for this role::
1. Create a new host
Type a selection and press <return>: 1

Comment 4 Luke Meyer 2013-11-19 14:14:10 UTC
This should be working reasonably well now. I'll give it a try myself - lot of changes recently.

It is fine to move roles between hosts as long as they haven't actually been installed yet. I don't think oo-install yet has the logic in place to keep you from modifying hosts that *have* been installed, but that's coming.

Comment 5 Johnny Liu 2013-11-20 09:43:52 UTC
Seem move operation have some issue now, pls refer to BZ#1032476.

(In reply to Luke Meyer from comment #4)
> This should be working reasonably well now. I'll give it a try myself - lot
> of changes recently.
> 
> It is fine to move roles between hosts as long as they haven't actually been
> installed yet. I don't think oo-install yet has the logic in place to keep
> you from modifying hosts that *have* been installed, but that's coming.

To be more clear, here is a scenarios.
1. Set up env, already installed broker, db, msgserver, node on different vms.
2. Trying to move node role to broker role.

You mean in the future this scenarios is not allowed?

Comment 6 Luke Meyer 2013-11-22 21:56:37 UTC
Right, I don't think we're ever going to go to the trouble to literally remove/disable a component that has been installed on a host and put it on another instead. Once a host has completed installation and configuration, the intention is that oo-install will not modify it, although I don't know how well that's implemented yet.

Perhaps we need to adjust the language because the "move" here occurs strictly in the deployment configuration; i.e. "we started oo-install defaulting to everything on one host, but actually you want to separate out activemq to a different host" - but this is before anything is deployed. After you start deploying the components, the only thing that should be allowed is adding nodes.

Comment 7 Luke Meyer 2014-01-03 22:13:44 UTC
So, just to be clear now... everything currently works as designed. 

* You can successfully move roles between hosts *in the oo-install configuration*
* Right now, I don't think the code distinguishes between hosts that have been installed already and those that haven't, but the intent is that in the future, changes to configuration for installed hosts won't be allowed. For now, hopefully people don't expect to do that.

So it needs to be clear that "move" just means changing the configuration of what you intend to install... not updating existing installed hosts. So this:

2. Move an OpenShift role to a different host

...should perhaps be re-worded to something like:

2. Reassign a not-yet-installed role to a different host

Truthfully, I can't think of a clear, concise way to get this concept across in a way that will correct someone who assumes, as you did, that we're talking about manipulating already-installed hosts.

In any case, I'm going to reduce the severity on this and think about addressing it after 2.0.1.