
In my previous blog, I introduced Manage operator, the new member of the Maximo product that will help you deploy the system, watch the system, make changes to the system. Understanding its “personality” will ensure a better relationship between you and your operator.
Operator is much more than an installer
A question I received quite often is: “I made a mistake when setting up Manage, should I deactivate Manage before I modify the configuration?” The answer is No. The operator does a lot more than an installer. If you need to make configuration changes, just do it. You do not need to uninstall it. Disregard whether the system is already running or not, running correctly or not, the operator knows how to manipulate the system to meet its spec. You do not tell it to “do this”, instead, you say “I want this”, it will work to get to the result you desire.
Operator is idempotent
“Reconcile” is the word we use to describe the operator at work. An operator can run on schedule or it can be triggered when something it watches changed, such as a pod dies, or a spec changes. A reconcile cycles may not change anything to the system if the system is running properly, such as if it is due to a scheduled run, or when the operator itself gets restarted. When the operator gets restarted, it typically goes through a reconcile cycle since its understanding of the system may be improved.
Manage operator is designed to reconcile only when there is a change in the system or the spec it watches changes.
Reconciles can run multiple times in a row if there are changes coming in when the previous reconcile is running. The changes can be made by the user, or it can be intentionally made by the operator itself and expects to process it in the next reconcile cycle. The operator also attempts to run again and put itself in a retry schedule if the previous reconciliation failed. Operator framework ensures that reconcile will be triggered when there are pending changes until the final states are reached. Do not need to hesitate when you make configuration changes to Manage. The timing does not matter.
Reconciliation can fail but don’t panic
Just like a human operator, the Manage operator may fail. It may due to an anticipated object does not exist in the system yet, or some error conditions the operator isn’t expecting. The operator reports its failure in the status section of the custom resource it watches. In our case, the ManageWorkspace
custom resource and its sub-resources have the information. When it fails, the operator will retry. Sometimes the condition corrects itself. An example can be that the build process takes longer than normal to generate the image, so that the deployment times out. Other times, your intervention is needed. For example, the Maximo database is not created correctly and only a DBA can correct it.

Manage operator minimizes interruption to the running system
For the applications whose servers are stateless, when a server fails, the client side can simply be redirected to another available server and continue. In this case, their operator’s job is relatively easy. If a spec is changed for the server, it can simply kill the old ones and start up new ones according to the spec in a rolling fashion. Maximo 8 is not totally there yet. We still have the classic Maximo UI that maintains session and prefer session affinity. Manage operator is careful about when it can restart the servers and when not to.
Here are some examples of what the operator does and does not do when a change is made:
Changes to the spec
|
Rebuild the images
|
Restart admin pod
|
Restart liberty server
|
Modify database connection information
|
No
|
Yes
|
Yes
|
Provide a new customization archive
|
Yes
|
Yes
|
Yes
|
Modify the credential of retrieving customization archive
|
No
|
No
|
No
|
Modify encryption key of Maximo Crypto fields
|
No
|
Yes
|
Yes
|
The public certificate expires
|
No
|
No
|
No, only the route is updated
|
Import external system’s certificate
|
No
|
No
|
No
|
Install a new industry solution
|
Yes
|
Yes
|
No
|
Add a new server bundle
|
No
|
No
|
Yes, only the new bundle servers
|
Add a bundle level Maximo Property
|
No
|
No
|
No
|
Increase the number of pods in a bundle
|
No
|
No
|
No, only the additional pods are started
|
Manage operator also handles the image build process and the deployment process separately. An image build process starts and runs independently of the deployed system. Only when the build finishes and new images are available, the re-deployment will be initiated. You can also disable the automated re-deploy when a new set of images are available by setting the build tag to a specific build, instead of “latest”. Instruction is here. By the same token, the liberty servers are only shutdown when the database needs to be updated.
Conclusion
Operator pattern is a great way to inject and structure automation and make the development of automation manageable. It may take a little bit getting used to how the Operator works. Hope this article helps you understand better the Manage operator and the concept of operator in general. Please send me your input of how to make our Manage operator work better for you.
#AssetandFacilitiesManagement#Maximo