def getTargetAllUserCredentials(self, target): ret = [] for creds in self._getTargetAllUserCredentials(target): credsDict = mintdata.unmarshalTargetUserCredentials(self.cfg, creds.credentials) ret.append((creds.target_credentials_id, credsDict)) return ret
def getTargetsForUsers(self, targetType): targetConfigs = self.getConfiguredTargetsByType(targetType) cu = self.db.cursor() cu.execute(""" SELECT t.name AS targetName, tc.credentials, tc.targetCredentialsId, Users.username, Users.userId FROM Targets t JOIN target_types USING (target_type_id) JOIN TargetUserCredentials AS tuc ON tuc.targetId = t.targetId JOIN Users USING (userId) JOIN TargetCredentials AS tc ON (tuc.targetCredentialsId=tc.targetCredentialsId) WHERE target_types.name = ? ORDER BY Users.userId, t.name """, targetType) ret = [] for targetName, creds, credsId, userName, userId in cu: userCredentials = mintdata.unmarshalTargetUserCredentials(self.cfg, creds) targetCfg = targetConfigs.get(targetName) if targetCfg is None: continue ret.append((userId, userName, targetName, credsId, targetCfg, userCredentials)) return ret
def getEC2AccountNumbersForProjectUsers(self, projectId): writers = set() readers = set() vals = projmodels.Member.objects.filter( project__project_id = projectId, user__target_user_credentials__target__target_type__name = 'ec2', user__target_user_credentials__target__name = 'aws').values_list('level', 'user__target_user_credentials__target_credentials__credentials') for level, creds in vals: val = datatypes.unmarshalTargetUserCredentials(self.cfg, creds ).get('accountId') if val is None: continue if level <= 1: writers.add(val) else: readers.add(val) return sorted(writers), sorted(readers)
def getTargetsForUser(self, targetType, userName): cu = self.db.cursor() cu.execute(""" SELECT t.name AS targetName, tc.credentials FROM Targets t JOIN target_types USING (target_type_id) JOIN TargetUserCredentials AS tuc ON tuc.targetId = t.targetId JOIN Users USING (userId) JOIN TargetCredentials AS tc ON (tuc.targetCredentialsId=tc.targetCredentialsId) WHERE target_types.name = ? AND Users.username = ? """, targetType, userName) userCreds = {} for targetName, creds in cu: userCreds[targetName] = mintdata.unmarshalTargetUserCredentials( self.cfg, creds) targetConfig = self.getConfiguredTargetsByType(targetType) ret = [] for targetName, cfg in sorted(targetConfig.items()): ret.append((targetName, cfg, userCreds.get(targetName, {}))) return ret
def getEC2AccountNumbersForProjectUsers(self, projectId): writers = set() readers = set() cu = self.db.cursor() cu.execute(""" SELECT CASE WHEN pu.level <= 1 THEN 1 ELSE 0 END AS isWriter, tc.credentials AS creds FROM projectUsers AS pu JOIN TargetUserCredentials AS tuc USING (userId) JOIN TargetCredentials AS tc USING (targetCredentialsId) JOIN Targets ON (tuc.targetId=Targets.targetId) JOIN target_types USING (target_type_id) WHERE pu.projectId = ? AND target_types.name = ? AND Targets.name = ?""", projectId, 'ec2', 'aws') for isWriter, creds in cu.fetchall(): val = mintdata.unmarshalTargetUserCredentials(None, creds).get('accountId') if val is None: continue if isWriter: writers.add(val) else: readers.add(val) return sorted(writers), sorted(readers)
def getTargetCredentialsForCurrentUser(self, target): creds = self._getTargetCredentialsForCurrentUser(target) if creds is None: return None return mintdata.unmarshalTargetUserCredentials(self.cfg, creds.credentials)
def _extractUserCredentialsFromCursor(self, cu): row = cu.fetchone() if not row: return {} return mintdata.unmarshalTargetUserCredentials(self.cfg, row[0])