public function getServiceAlias($svr_id) { $query = DcmdService::findOne($svr_id); if ($query) { return $query->svr_alias; } return ""; }
public function getServiceName($svr_id) { $ret = DcmdService::findOne($svr_id); if ($ret) { return $ret['svr_name']; } else { return ''; } }
public function getAppName($svr_id) { $query = DcmdService::findOne($svr_id); if ($query) { $app = DcmdApp::findOne($query['app_id']); if ($app) { return $app['app_name']; } } return ""; }
public function actionCreateByCmd($task_cmd_id) { if (Yii::$app->request->post()) { ///提交新建任务 #var_dump(Yii::$app->request->post()); exit ; $dcmd_task = new DcmdTask(); $post_task = Yii::$app->request->post()['DcmdTask']; $dcmd_task->task_name = Yii::$app->request->post()['task_cmd_prv'] . '-' . $post_task['task_name']; $dcmd_task->task_cmd = $post_task['task_cmd']; $dcmd_task->depend_task_id = 0; $dcmd_task->depend_task_name = "NULL"; $dcmd_task->app_id = $post_task['app_id']; $dcmd_app = DcmdApp::findOne($post_task['app_id']); $dcmd_task->app_name = $dcmd_app->app_name; $dcmd_task->svr_id = $post_task['svr_id']; $dcmd_svr = DcmdService::findOne($post_task['svr_id']); $dcmd_task->svr_name = $dcmd_svr->svr_name; /// $post_task['svr_name']; $dcmd_task->svr_path = $dcmd_svr->svr_path; ///$post_task['svr_path']; $dcmd_task->node_multi_pool = $dcmd_svr->node_multi_pool; $dcmd_task->err_msg = ' '; $dcmd_task->tag = $post_task['tag']; $dcmd_task->update_env = $post_task['update_env']; $dcmd_task->update_tag = $post_task['update_tag']; $dcmd_task->state = 0; $dcmd_task->freeze = 0; $dcmd_task->valid = 1; $dcmd_task->pause = 0; $dcmd_task->concurrent_rate = $post_task['concurrent_rate']; $dcmd_task->timeout = $post_task['timeout']; $dcmd_task->auto = $post_task['auto']; $dcmd_task->process = $post_task['process']; $dcmd_task->utime = date('Y-m-d H:i:s'); $dcmd_task->ctime = $dcmd_task->utime; $dcmd_task->opr_uid = Yii::$app->user->getId(); $dcmd_task->comment = $post_task['comment']; $arg = array(); $opr_log = new DcmdOprLog(); $opr_log->log_table = "dcmd_task"; $opr_log->opr_type = 1; $opr_log->sql_statement = "insert task:" . $dcmd_task->task_name; $opr_log->ctime = date('Y-m-d H:i:s'); $opr_log->opr_uid = Yii::$app->user->getId(); $opr_log->save(); foreach (Yii::$app->request->post() as $k => $v) { if (substr($k, 0, 3) == "Arg") { $arg[substr($k, 3)] = $v; } } $dcmd_task->task_arg = arrToXml($arg); if ($dcmd_task->save()) { ///设备池默认属性 $svr_pool_attr_def = array(); $tmp_query = DcmdServicePoolAttrDef::find()->asArray()->all(); foreach ($tmp_query as $item) { $svr_pool_attr_def[$item['attr_name']] = $item['def_value']; } ///保存服务池子信息 if (array_key_exists("selection", Yii::$app->request->post())) { $svr_pool = Yii::$app->request->post()["selection"]; foreach ($svr_pool as $k => $svr_pool_id) { $svr_query = DcmdService::findOne($dcmd_task->svr_id); $svr_pool_query = DcmdServicePool::findOne($svr_pool_id); $svr_pool_node_query = DcmdServicePoolNode::find()->andWhere(['svr_pool_id' => $svr_pool_id])->asArray()->all(); $dcmd_task_service_pool = new DcmdTaskServicePool(); $dcmd_task_service_pool->task_id = $dcmd_task->task_id; $dcmd_task_service_pool->task_cmd = $dcmd_task->task_cmd; $dcmd_task_service_pool->svr_pool = $svr_pool_query['svr_pool']; $dcmd_task_service_pool->svr_pool_id = $svr_pool_id; $dcmd_task_service_pool->env_ver = $svr_pool_query['env_ver']; $dcmd_task_service_pool->repo = $svr_pool_query['repo']; $dcmd_task_service_pool->run_user = $svr_query['run_user']; $dcmd_task_service_pool->undo_node = count($svr_pool_node_query); $dcmd_task_service_pool->doing_node = 0; $dcmd_task_service_pool->finish_node = 0; $dcmd_task_service_pool->fail_node = 0; $dcmd_task_service_pool->ignored_fail_node = 0; $dcmd_task_service_pool->ignored_doing_node = 0; $dcmd_task_service_pool->state = 0; $dcmd_task_service_pool->utime = date('Y-m-d H:i:s'); $dcmd_task_service_pool->ctime = $dcmd_task_service_pool->utime; $dcmd_task_service_pool->opr_uid = Yii::$app->user->getId(); if (!$dcmd_task_service_pool->save()) { Yii::$app->getSession()->setFlash('error', "保存服务池子失败"); } else { $tm = date('Y-m-d H:i:s'); ///保存服务池属性 $svr_pool_attr = array(); $tmp_query = DcmdServicePoolAttr::find()->andWhere(['svr_pool_id' => $svr_pool_id])->asArray()->all(); foreach ($tmp_query as $item) { $svr_pool_attr[$item['attr_name']] = $item['attr_value']; } foreach ($svr_pool_attr_def as $name => $value) { $dcmd_task_service_pool_attr = new DcmdTaskServicePoolAttr(); $dcmd_task_service_pool_attr->task_id = $dcmd_task->task_id; $dcmd_task_service_pool_attr->app_id = $dcmd_task->app_id; $dcmd_task_service_pool_attr->svr_id = $dcmd_task->svr_id; $dcmd_task_service_pool_attr->svr_pool_id = $svr_pool_id; $dcmd_task_service_pool_attr->attr_name = $name; if (array_key_exists($name, $svr_pool_attr)) { $dcmd_task_service_pool_attr->attr_value = $svr_pool_attr[$name]; } else { $dcmd_task_service_pool_attr->attr_value = $value; } $dcmd_task_service_pool_attr->utime = $tm; $dcmd_task_service_pool_attr->ctime = $tm; $dcmd_task_service_pool_attr->opr_uid = Yii::$app->user->getId(); $dcmd_task_service_pool_attr->save(); } } } } } ///选择服务池子 return $this->redirect(array('select-service-pool-node', 'task_id' => $dcmd_task->task_id)); } else { ///添加新任务 ///获取改用户可以操作的产品列表 $group = "select app_id, app_name from dcmd_app where "; $query = DcmdUserGroup::find()->andWhere(['uid' => Yii::$app->user->getId()])->all(); if (Yii::$app->user->getIdentity()->admin == 1) { $group .= " sa_gid in (0"; } else { $group .= " svr_gid in (0"; } if ($query) { foreach ($query as $item) { $group .= "," . $item->gid; } } $group .= ")"; $query = DcmdApp::findBySql($group)->all(); $app = array("" => ""); if ($query) { foreach ($query as $item) { $app[$item->app_id] = $item->app_name; } } $task_cmd = DcmdTaskCmd::findOne($task_cmd_id); $model = new DcmdTask(); $model->depend_task_id = 0; $model->depend_task_name = ""; $model->task_cmd = $task_cmd->task_cmd; $task_cmd_prv = $task_cmd->ui_name . '-' . date("YmdHis"); $args = $this->showTaskArg(arrToXml(array()), $task_cmd_id); return $this->render('create_by_cmd', ['model' => $model, 'app' => $app, 'task_cmd_prv' => $task_cmd_prv, 'args' => $args]); } echo "未知错误!"; exit; }
public function actionAddNode() { $app_id = Yii::$app->request->post()["app_id"]; $svr_id = Yii::$app->request->post()["svr_id"]; $svr_pool_id = Yii::$app->request->post()["svr_pool_id"]; $model = DcmdApp::findOne($app_id); ///判断用户所属的系统组是否和该应用相同 $query = DcmdUserGroup::findOne(['uid' => Yii::$app->user->getId(), 'gid' => $model['sa_gid']]); if ($query == NULL) { Yii::$app->getSession()->setFlash('success', NULL); Yii::$app->getSession()->setFlash('error', "对不起, 你没有权限!"); return $this->redirect(array('dcmd-service-pool/view', 'id' => $svr_pool_id, 'show_div' => 'dcmd-service-pool-node')); } $service = DcmdService::findOne($svr_id); $success_msg = ""; $err_msg = ""; if (array_key_exists("selection", Yii::$app->request->post())) { $success_msg = "成功添加以下设备:"; $nid_str = "nid in (0"; foreach (Yii::$app->request->post()["selection"] as $k => $v) { $nid_str .= "," . $v; } $nid_str .= ")"; $query = DcmdNode::find()->where($nid_str)->asArray()->all(); $tm = date('Y-m-d H:i:s'); foreach ($query as $item) { if ($service->node_multi_pool == 0) { ///不可重复节点 $temp = DcmdServicePoolNode::findOne(['svr_id' => $svr_id, 'ip' => $item['ip']]); if ($temp) { $err_msg .= "已经有池子使用该节点:" . $item['ip'] . " "; continue; } } $server_pool_node = new DcmdServicePoolNode(); $server_pool_node->svr_pool_id = $svr_pool_id; $server_pool_node->svr_id = $svr_id; $server_pool_node->app_id = $app_id; $server_pool_node->nid = $item['nid']; $server_pool_node->ip = $item['ip']; $server_pool_node->utime = $tm; $server_pool_node->ctime = $tm; $server_pool_node->opr_uid = Yii::$app->user->getId(); $server_pool_node->save(); $this->oprlog(1, "add ip:" . $item['ip']); $success_msg .= $item['ip'] . " "; } } if ($success_msg != "") { Yii::$app->getSession()->setFlash('success', $success_msg); } if ($err_msg != "") { Yii::$app->getSession()->setFlash('error', $err_msg); } return $this->redirect(array('dcmd-service-pool/view', 'id' => $svr_pool_id, 'show_div' => 'dcmd-service-pool-node')); }
/** * Updates an existing DcmdTaskTemplate model. * If update is successful, the browser will be redirected to the 'view' page. * @param integer $id * @return mixed */ public function actionUpdate($id) { ///只有管理员可以操作 if (Yii::$app->user->getIdentity()->admin != 1) { Yii::$app->getSession()->setFlash('success', NULL); Yii::$app->getSession()->setFlash('error', "对不起,你没有权限!"); return $this->redirect(array('dcmd-task-template/view', 'id' => $id)); } $model = $this->findModel($id); if ($model->load(Yii::$app->request->post())) { $model->load(Yii::$app->request->post()); $query = DcmdService::findOne($model->svr_id); $model->svr_name = $query['svr_name']; $query = DcmdTaskCmd::findOne($model->task_cmd_id); ////Yii::$app->request->post()['task_cmd_id']); $model->task_cmd = $query['task_cmd']; $model->utime = date('Y-m-d H:i:s'); $model->ctime = $model->utime; $model->opr_uid = Yii::$app->user->getId(); $arg = array(); foreach (Yii::$app->request->post() as $k => $v) { if (substr($k, 0, 3) == "Arg") { $arg[substr($k, 3)] = $v; } } $model->task_arg = arrToXml($arg); if ($model->save()) { Yii::$app->getSession()->setFlash('success', "修改成功"); $this->oprlog(2, "update task template:" . $model->task_tmpt_name); return $this->redirect(['view', 'id' => $model->task_tmpt_id]); } } ///获取产品信息 $query = DcmdApp::find()->asArray()->all(); $app = array("" => ""); if ($query) { foreach ($query as $item) { $app[$item['app_id']] = $item['app_name']; } } ///获取任务脚本 $query = DcmdTaskCmd::find()->asArray()->all(); $task_cmd = array("" => ""); if ($query) { foreach ($query as $item) { $task_cmd[$item['task_cmd_id']] = $item['task_cmd']; } } $arg_content = $this->actionGetTaskTypeArg($model->task_cmd_id, xmltoarray($model->task_arg)); return $this->render('update', ['model' => $model, 'app' => $app, 'task_cmd' => $task_cmd, 'svr' => array($model->svr_id => $model->svr_name), 'arg_content' => $arg_content]); }
/** * Finds the DcmdService model based on its primary key value. * If the model is not found, a 404 HTTP exception will be thrown. * @param integer $id * @return DcmdService the loaded model * @throws NotFoundHttpException if the model cannot be found */ protected function findModel($id) { if (($model = DcmdService::findOne($id)) !== null) { return $model; } else { throw new NotFoundHttpException('The requested page does not exist.'); } }
/** * Creates a new DcmdServiceArchDiagram model. * If creation is successful, the browser will be redirected to the 'view' page. * @return mixed */ public function actionCreate($svr_id) { $model = new DcmdServiceArchDiagram(); $service = DcmdService::findOne($svr_id); ///仅仅用户与该应用在同一个系统组才可以操作 $temp = DcmdApp::findOne($service['app_id']); $query = DcmdUserGroup::findOne(['uid' => Yii::$app->user->getId(), 'gid' => $temp['sa_gid']]); if ($query == NULL) { Yii::$app->getSession()->setFlash('success', NULL); Yii::$app->getSession()->setFlash('error', "对不起, 你没有权限!"); return $this->redirect(array('dcmd-service/view', 'id' => $svr_id)); } if (Yii::$app->request->post()) { $image_name = Yii::$app->request->post()['DcmdServiceArchDiagram']['arch_name']; $comment = Yii::$app->request->post()['DcmdServiceArchDiagram']['comment']; if ($image_name == "") { Yii::$app->getSession()->setFlash('error', '图片名不可为空!'); return $this->render('create', ['model' => $model, 'service' => $service]); } $query = DcmdServiceArchDiagram::findOne(['svr_id' => $svr_id, 'arch_name' => $image_name]); if ($query) { Yii::$app->getSession()->setFlash('error', '图片名已经存在!'); return $this->render('create', ['model' => $model, 'service' => $service]); } $file_name = $_FILES["DcmdServiceArchDiagram"]["name"]["arch_name"]; if (strpos($file_name, ".jpg") <= 0) { Yii::$app->getSession()->setFlash('error', '只可上传jpg文件!'); return $this->render('create', ['model' => $model, 'service' => $service]); } if (!file_exists($_FILES["DcmdServiceArchDiagram"]["tmp_name"]['arch_name'])) { Yii::$app->getSession()->setFlash('error', '未选择架构图!'); return $this->render('create', ['model' => $model, 'service' => $service]); } $model->app_id = $service->app_id; $model->svr_id = $svr_id; $model->arch_name = $image_name; $size = filesize($_FILES['DcmdServiceArchDiagram']['tmp_name']['arch_name']); $file = fopen($_FILES["DcmdServiceArchDiagram"]["tmp_name"]['arch_name'], 'rb'); $model->diagram = addslashes(fread($file, $size)); fclose($file); $model->comment = $comment; $model->utime = date('Y-m-d H:i:s'); $model->ctime = $model->utime; $model->opr_uid = Yii::$app->user->getId(); if ($model->save()) { $this->oprlog(1, "insert arch_name:" . $model->arch_name); Yii::$app->getSession()->setFlash('success', '添加成功'); return $this->redirect(['dcmd-service/view', 'id' => $svr_id]); } $err_msg = ""; foreach ($model->getErrors() as $item) { foreach ($item as $k => $v) { $err_msg .= $v . " "; } } echo $err_msg; exit; Yii::$app->getSession()->setFlash('error', '添加数据库失败:' . $err_msg); return $this->render('create', ['model' => $model, 'service' => $service]); } else { return $this->render('create', ['model' => $model, 'service' => $service]); } }