mirror of
				https://github.com/open-metadata/OpenMetadata.git
				synced 2025-10-31 02:29:03 +00:00 
			
		
		
		
	Fix upgrade issues with new bot role feature (#8895)
This commit is contained in:
		
							parent
							
								
									fb548fc577
								
							
						
					
					
						commit
						d758a542aa
					
				| @ -89,6 +89,9 @@ public class UserRepository extends EntityRepository<User> { | |||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   private List<EntityReference> getInheritedRoles(User user) throws IOException { |   private List<EntityReference> getInheritedRoles(User user) throws IOException { | ||||||
|  |     if (Boolean.TRUE.equals(user.getIsBot())) { | ||||||
|  |       return null; // No inherited roles for bots | ||||||
|  |     } | ||||||
|     getTeams(user); |     getTeams(user); | ||||||
|     return SubjectCache.getInstance() != null ? SubjectCache.getInstance().getRolesForTeams(getTeams(user)) : null; |     return SubjectCache.getInstance() != null ? SubjectCache.getInstance().getRolesForTeams(getTeams(user)) : null; | ||||||
|   } |   } | ||||||
|  | |||||||
| @ -53,6 +53,7 @@ import org.openmetadata.schema.api.data.RestoreEntity; | |||||||
| import org.openmetadata.schema.entity.Bot; | import org.openmetadata.schema.entity.Bot; | ||||||
| import org.openmetadata.schema.entity.teams.User; | import org.openmetadata.schema.entity.teams.User; | ||||||
| import org.openmetadata.schema.type.EntityHistory; | import org.openmetadata.schema.type.EntityHistory; | ||||||
|  | import org.openmetadata.schema.type.EntityReference; | ||||||
| import org.openmetadata.schema.type.Include; | import org.openmetadata.schema.type.Include; | ||||||
| import org.openmetadata.schema.type.Relationship; | import org.openmetadata.schema.type.Relationship; | ||||||
| import org.openmetadata.service.Entity; | import org.openmetadata.service.Entity; | ||||||
| @ -68,6 +69,7 @@ import org.openmetadata.service.security.Authorizer; | |||||||
| import org.openmetadata.service.security.DefaultAuthorizer; | import org.openmetadata.service.security.DefaultAuthorizer; | ||||||
| import org.openmetadata.service.security.SecurityUtil; | import org.openmetadata.service.security.SecurityUtil; | ||||||
| import org.openmetadata.service.util.EntityUtil; | import org.openmetadata.service.util.EntityUtil; | ||||||
|  | import org.openmetadata.service.util.EntityUtil.Fields; | ||||||
| import org.openmetadata.service.util.ResultList; | import org.openmetadata.service.util.ResultList; | ||||||
| 
 | 
 | ||||||
| @Slf4j | @Slf4j | ||||||
| @ -104,6 +106,21 @@ public class BotResource extends EntityResource<Bot, BotRepository> { | |||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   @Override | ||||||
|  |   protected void upgrade() throws IOException { | ||||||
|  |     // This should be deleted once 0.13 is deprecated | ||||||
|  |     // For all the existing bots, add ingestion bot role | ||||||
|  |     ResultList<Bot> bots = dao.listAfter(null, Fields.EMPTY_FIELDS, new ListFilter(Include.NON_DELETED), 1000, null); | ||||||
|  |     EntityReference ingestionBotRole = RoleResource.getRole(Entity.INGESTION_BOT_ROLE); | ||||||
|  |     for (Bot bot : bots.getData()) { | ||||||
|  |       User botUser = Entity.getEntity(bot.getBotUser(), "roles", Include.NON_DELETED); | ||||||
|  |       if (botUser.getRoles() == null) { | ||||||
|  |         botUser.setRoles(List.of(ingestionBotRole)); | ||||||
|  |         dao.addRelationship(botUser.getId(), ingestionBotRole.getId(), Entity.USER, Entity.ROLE, Relationship.HAS); | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|   private static String getRoleForBot(String botName) { |   private static String getRoleForBot(String botName) { | ||||||
|     switch (botName) { |     switch (botName) { | ||||||
|       case Entity.INGESTION_BOT_NAME: |       case Entity.INGESTION_BOT_NAME: | ||||||
|  | |||||||
| @ -94,6 +94,7 @@ public class RoleResource extends EntityResource<Role, RoleRepository> { | |||||||
|   public void initialize(OpenMetadataApplicationConfig config) throws IOException { |   public void initialize(OpenMetadataApplicationConfig config) throws IOException { | ||||||
|     List<Role> roles = dao.getEntitiesFromSeedData(); |     List<Role> roles = dao.getEntitiesFromSeedData(); | ||||||
|     for (Role role : roles) { |     for (Role role : roles) { | ||||||
|  |       role.setFullyQualifiedName(role.getName()); | ||||||
|       List<EntityReference> policies = role.getPolicies(); |       List<EntityReference> policies = role.getPolicies(); | ||||||
|       for (EntityReference policy : policies) { |       for (EntityReference policy : policies) { | ||||||
|         EntityReference ref = Entity.getEntityReferenceByName(Entity.POLICY, policy.getName(), Include.NON_DELETED); |         EntityReference ref = Entity.getEntityReferenceByName(Entity.POLICY, policy.getName(), Include.NON_DELETED); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Suresh Srinivas
						Suresh Srinivas