We want to remove the current CARA agents, which are no more in system but still shows as offline in agent lists. While trying to delete such agents it result in error:
RCNotificationException: You cannot delete a server that is being used by Release Center artifacts. Artifacts using this server are: <br> - <ARTIFACT NAME>, application: <APPLICATION NAME>
The agent we are trying to remove is associated with 56,000 releases as "Release center artifact" and removing this link via UI is impossible task.
Is there a way to force the removal of an agent even if it is associated with a release center artifact?
Release : 6.7
Component: CA RELEASE AUTOMATION ADMINISTRATION
The end user is not able to remove the agent as it is linked to artifact version as an artifact retrieval agent. It's due to bad design consideration of artifacts by choosing artifact retrieval agent over artifact retrieval groups.
The recommendation approach while considering artifact design is below
1: Create an artifact retrieval agents groups and assign agents to the respective groups.
2: Associate the groups with artifact version instead of agents.
3: The above result in loose coupling with artifact version and associated agents, any agent part of the group will be responsible for artifact download and distribution to targets.
4: Due to loose coupling, an administration can remove/replace an agent from group and hence will not result in above error caused due to tight coupling of agent to artifact version.
However, in current setup it is not possible to perform de-linking agents and artifact version via ROC UI and hence the 2 step workaround i.e. delinking agents via DB query and removing agent via ROC UI. Follow steps below to achieve same.
Create backup of tables servers, rc_artifact_getters, rc_artifact_getters_aud before executing any DB query, as it will act as checkpoint for restoration in case of unforeseen failure. In absence of the backup tables and no restoration checkpoint can result in DB data corruption.
Workaround step 1 (Swap AGENT_TO_BE_REMOVED with REPLACING_AGENT)
1: Identify the id of agent i.e. AGENT_TO_BE_REMOVED from RA.
select id from servers where server_name like '%AGENT_TO_BE_REMOVED%'
2: Identify the id of agent i.e. REPLACING_AGENT which will be replacing the agent getting removed.
select id from servers where server_name like '%REPLACING_AGENT%'
3: Update the artifact getters
update rc_artifact_getters set server_id=<REPLACING_AGENT_ID> where server_id =<AGENT_TO_BE_REMOVED_ID>;
4: Update the Auditing table as it is required to maintain consistency of data in DB
update rc_artifact_getters_aud set server_id=<REPLACING_AGENT_ID> where server_id =<AGENT_TO_BE_REMOVED_ID>;
Workaround step 2 (Remove AGENT_TO_BE_REMOVED via ROC UI)
1: Login to ROC UI
2: Navigate to path Administration -> Agent Management -> Select the agent i.e. AGENT_TO_BE_REMOVED
3: Remove agent by clicking recycle bin icon
In case of any failure while executing DB query, please restore the respective DB tables from backup created as part of Workaround Prerequisite.