Fixing history, remove, and logs views

This commit is contained in:
mati108@gmail.com committed 2019-01-29 18:04:00 -03:00
1 parent 6785a45415
commit ee91e02cec
9 files changed
+96 -48

No files matched your search

+6 -6
View File
@@ -2,9 +2,9 @@ import logger from '../config/logger'
import { KubernateError } from '../errors'
import { Client, config } from 'kubernetes-client'
const getClonePodStatus = async (cloneName) => {
const getClonePodLogs = async (cloneName) => {
try {
logger.debug("getClonePodStatus on kubernates started.")
logger.debug("getClonePodLogs on kubernates started.")
const client = new Client({config: config.fromKubeconfig(), version: '1.9'})
let query = {
@@ -12,23 +12,23 @@ const getClonePodStatus = async (cloneName) => {
"labelSelector": "job-name="+cloneName
}
}
const pod = await client.api.v1.namespaces('default').pods.get(query)
let queryLogs = {
"qs":{
"tailLines": "15"
"tailLines": "20"
}
}
const logs = await client.api.v1.namespaces('default')
.pods(pod.body.items[0].metadata.name).log.get(queryLogs)
let logsArray = logs.body.split('\n')
logger.debug("getClonePodStatus on kubernates successful.")
logger.debug("getClonePodLogs on kubernates successful.")
return JSON.stringify(logsArray, null, 2)
} catch (err) {
throw new KubernateError(err)
}
}
export default getClonePodStatus
export default getClonePodLogs
+4 -2
View File
@@ -1,9 +1,11 @@
import logger from '../config/logger'
import { KubernateError } from '../errors'
import { Client, config } from 'kubernetes-client'
import { getJobNameFromClone } from '../config/utils'
const removeClone = async (cloneName) => {
const removeClone = async (clone, teamSlug, botSlug) => {
try {
let cloneName = getJobNameFromClone(teamSlug, botSlug, clone.mode)
logger.info("removeClone %s", cloneName)
const client = new Client({config: config.fromKubeconfig(), version: '1.9'})
@@ -15,7 +17,7 @@ const removeClone = async (cloneName) => {
const removed = await client.apis.batch.v1.namespaces('default').jobs(
cloneName).delete()
const pod = await client.api.v1.namespaces('default').pods.get(query)
const podRemoved = await client.api.v1.namespaces('default')
.pods(pod.body.items[0].metadata.name).delete()
@@ -45,8 +45,8 @@ const resolve = async(parent, { clone }, context) => {
}
try{
// Authorization is handled by the teams module
let botsByUser = await teams_FbByTeamMember(context.authorization)
console.log("botsByUser: ", botsByUser)
let selectedBot = getSelectedBot(botsByUser.data.data.teams_FbByTeamMember, clone.botId)
clone.teamId = botsByUser.data.data.teams_FbByTeamMember.id
clone.botId = selectedBot.id
@@ -12,6 +12,8 @@ import {
import { Clone } from '../../models'
import logger from '../../config/logger'
import removeKuberneteClone from '../../kubernetes/removeClone'
import teams_FbByTeamMember from '../../graphQLCalls/teams_FbByTeamMember'
import { isDefined, getSelectedBot } from '../../config/utils'
const args = {
id: { type: new GraphQLNonNull(GraphQLID) }
@@ -24,7 +26,22 @@ const resolve = async (parent, { id }, context) => {
throw new AuthentificationError()
}
await removeKuberneteClone(id)
let clone = await Clone.findOne({
_id: id,
authId: context.userId,
active: true
})
if(!isDefined(clone)){
throw new CustomError('You are not authorized to remove this clone.')
}
// Authorization is also handled by the teams module
let botsByUser = await teams_FbByTeamMember(context.authorization)
let selectedBot = getSelectedBot(botsByUser.data.data.teams_FbByTeamMember, clone.botId)
logger.debug('removeClone -> Removing Clone from Kubernates.')
await removeKuberneteClone(clone, botsByUser.data.data.teams_FbByTeamMember.slug, selectedBot.slug)
const query = {
_id: id,
@@ -33,12 +50,13 @@ const resolve = async (parent, { id }, context) => {
const options = { new: true }
const update = { active: false }
logger.debug('removeClone -> Removing Clone from DB.')
Clone.findOneAndUpdate(query, update, options, (err, doc) => {
if (err){
logger.error('removeClone -> Error removing clone from the DB. %s', err.stack)
throw new OperationsError(err)
}else{
resolve('Clone Removed.')
logger.debug('removeClone -> Clone Removed from the DB.')
return('Clone Removed.')
}
})
}
@@ -11,6 +11,8 @@ import { Clone } from '../../models'
import logger from '../../config/logger'
import getKuberneteClonePodStatus from '../../kubernetes/getClonePodStatus'
import getKuberneteClonePodLogs from '../../kubernetes/getClonePodLogs'
import teams_FbByTeamMember from '../../graphQLCalls/teams_FbByTeamMember'
import cloneDetails from './cloneDetails'
const args = {}
@@ -26,6 +28,14 @@ const resolve = async(parent, args, context) => {
active: false
})
// TODO Refactor this code once financial beings api is ready
// Authorization is handled by the teams module
let botsByUser = await teams_FbByTeamMember(context.authorization)
for (var i = 0; i < clones.length; i++) {
clones[i] = await cloneDetails(context.authorization, botsByUser, clones[i])
}
return clones
}
+8 -17
View File
@@ -12,9 +12,8 @@ import { Clone } from '../../models'
import logger from '../../config/logger'
import getCloneStatus from '../../kubernetes/getClonePodStatus'
import getCloneLogs from '../../kubernetes/getClonePodLogs'
import { getJobNameFromClone, getSelectedBot } from '../../config/utils'
import teams_FbByTeamMember from '../../graphQLCalls/teams_FbByTeamMember'
import teamAvatar from '../../graphQLCalls/teamAvatar'
import cloneDetails from './cloneDetails'
const args = {}
@@ -30,24 +29,16 @@ const resolve = async(parent, args, context) => {
active: true
})
// TODO Refactor this code once financial beings api is ready
// Authorization is handled by the teams module
let botsByUser = await teams_FbByTeamMember(context.authorization)
for (var i = 0; i < clones.length; i++) {
logger.debug('List Clones -> clone: %j', clones[i])
// TODO Refactor this code once financial beings api is ready
let selectedBot = getSelectedBot(botsByUser.data.data.teams_FbByTeamMember, clones[i].botId)
let cloneName = getJobNameFromClone(botsByUser.data.data.teams_FbByTeamMember.slug, selectedBot.slug, clones[i].mode)
clones[i].kind = selectedBot.kind
clones[i].teamName = botsByUser.data.data.teams_FbByTeamMember.name
clones[i].botName = selectedBot.name
clones[i].botAvatar = selectedBot.avatar
let team = await teamAvatar(context.authorization, botsByUser.data.data.teams_FbByTeamMember.id)
clones[i].teamAvatar = team.data.data.teams_TeamById.profile.avatar
clones[i].state = await getCloneStatus(cloneName)
clones[i].lastLogs = await getCloneLogs(cloneName)
clones[i] = await cloneDetails(context.authorization, botsByUser, clones[i])
let state = await getCloneStatus(clones[i].cloneName)
clones[i].state = state.substring(1, state.length-1)
let lastLogs = await getCloneLogs(clones[i].cloneName)
clones[i].lastLogs = lastLogs.substring(1, lastLogs.length-1)
}
return clones
} catch (err){
+21
View File
@@ -0,0 +1,21 @@
import logger from '../../config/logger'
import { getJobNameFromClone, getSelectedBot } from '../../config/utils'
import teamAvatar from '../../graphQLCalls/teamAvatar'
const cloneDetails = async(authorization, botsByUser, clone) => {
logger.debug('Retrieving clone details.')
// TODO Refactor this code once financial beings api is ready
let selectedBot = getSelectedBot(botsByUser.data.data.teams_FbByTeamMember, clone.botId)
clone.cloneName = getJobNameFromClone(botsByUser.data.data.teams_FbByTeamMember.slug, selectedBot.slug, clone.mode)
clone.kind = selectedBot.kind
clone.teamName = botsByUser.data.data.teams_FbByTeamMember.name
clone.botName = selectedBot.name
clone.botAvatar = selectedBot.avatar
let team = await teamAvatar(authorization, botsByUser.data.data.teams_FbByTeamMember.id)
clone.teamAvatar = team.data.data.teams_TeamById.profile.avatar
logger.debug('Retrieving clone details complete.')
return clone
};
export default cloneDetails