/**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function search($params)
 {
     ///应用组用户只可查看所在组的应用
     $svr_con = "";
     if (Yii::$app->user->getIdentity()->admin != 1) {
         $app_con = "svr_gid in (0";
         $query = DcmdUserGroup::find()->andWhere(['uid' => Yii::$app->user->getId()])->asArray()->all();
         if ($query) {
             foreach ($query as $item) {
                 $app_con .= "," . $item['gid'];
             }
         }
         $app_con .= ")";
         $query = DcmdApp::find()->where($app_con)->asArray()->all();
         $svr_con = "app_id in (0";
         foreach ($query as $item) {
             $svr_con .= "," . $item['app_id'];
         }
         $svr_con .= ")";
     }
     $query = DcmdService::find()->where($svr_con)->orderBy('svr_name');
     $dataProvider = new ActiveDataProvider(['query' => $query, 'pagination' => ['pagesize' => 20]]);
     if (!($this->load($params) && $this->validate())) {
         return $dataProvider;
     }
     $query->andFilterWhere(['svr_id' => $this->svr_id, 'app_id' => $this->app_id, 'owner' => $this->owner, 'utime' => $this->utime, 'ctime' => $this->ctime, 'opr_uid' => $this->opr_uid]);
     $query->andFilterWhere(['like', 'svr_name', $this->svr_name])->andFilterWhere(['like', 'svr_alias', $this->svr_alias])->andFilterWhere(['like', 'svr_path', $this->svr_path])->andFilterWhere(['like', 'run_user', $this->run_user])->andFilterWhere(['like', 'comment', $this->comment]);
     return $dataProvider;
 }
 /**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function search($params)
 {
     ///非admin用户,可查看所属业务组内的任务
     $svr_con = "";
     if (Yii::$app->user->getIdentity()->admin != 1) {
         $app_con = "svr_gid in (0";
         $query = DcmdUserGroup::find()->andWhere(['uid' => Yii::$app->user->getId()])->asArray()->all();
         if ($query) {
             foreach ($query as $item) {
                 $app_con .= "," . $item['gid'];
             }
         }
         $app_con .= ")";
         $query = DcmdApp::find()->where($app_con)->asArray()->all();
         $app_con = "app_id in (0";
         foreach ($query as $item) {
             $app_con .= "," . $item['app_id'];
         }
         $app_con .= ")";
         $query = DcmdService::find()->where($app_con)->asArray()->all();
         $svr_con = "svr_id in (0";
         foreach ($query as $item) {
             $svr_con .= "," . $item['svr_id'];
         }
         $svr_con .= ")";
     }
     $query = DcmdTaskHistory::find()->where($svr_con)->orderBy('task_id desc');
     $dataProvider = new ActiveDataProvider(['query' => $query, 'pagination' => ['pagesize' => 20]]);
     if (!($this->load($params) && $this->validate())) {
         return $dataProvider;
     }
     $query->andFilterWhere(['task_id' => $this->task_id, 'depend_task_id' => $this->depend_task_id, 'svr_id' => $this->svr_id, 'update_env' => $this->update_env, 'update_tag' => $this->update_tag, 'state' => $this->state, 'freeze' => $this->freeze, 'valid' => $this->valid, 'pause' => $this->pause, 'concurrent_rate' => $this->concurrent_rate, 'timeout' => $this->timeout, 'auto' => $this->auto, 'process' => $this->process, 'utime' => $this->utime, 'ctime' => $this->ctime, 'opr_uid' => $this->opr_uid]);
     $query->andFilterWhere(['like', 'task_name', $this->task_name])->andFilterWhere(['like', 'task_cmd', $this->task_cmd])->andFilterWhere(['like', 'depend_task_name', $this->depend_task_name])->andFilterWhere(['like', 'svr_name', $this->svr_name])->andFilterWhere(['like', 'svr_path', $this->svr_path])->andFilterWhere(['like', 'tag', $this->tag])->andFilterWhere(['like', 'err_msg', $this->err_msg])->andFilterWhere(['like', 'task_arg', $this->task_arg])->andFilterWhere(['like', 'comment', $this->comment]);
     return $dataProvider;
 }
 public function getServiceAlias($svr_id)
 {
     $query = DcmdService::findOne($svr_id);
     if ($query) {
         return $query->svr_alias;
     }
     return "";
 }
Example #4
0
 public function getServiceName($svr_id)
 {
     $ret = DcmdService::findOne($svr_id);
     if ($ret) {
         return $ret['svr_name'];
     } else {
         return '';
     }
 }
Example #5
0
 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 "";
 }
 /**
  * Lists all DcmdServicePool models.
  * @return mixed
  */
 public function actionIndex()
 {
     $params = array();
     if (array_key_exists('DcmdServicePoolSearch', Yii::$app->request->queryParams)) {
         $params['DcmdServicePoolSearch'] = Yii::$app->request->queryParams['DcmdServicePoolSearch'];
         if ($params['DcmdServicePoolSearch']['app_id'] == "") {
             $params['DcmdServicePoolSearch']['svr_id'] = "";
         }
     }
     ///应用足用户只可查看所在组的应用
     $app_con = "";
     if (Yii::$app->user->getIdentity()->admin != 1) {
         $app_con = "svr_gid in (0";
         $query = DcmdUserGroup::find()->andWhere(['uid' => Yii::$app->user->getId()])->asArray()->all();
         if ($query) {
             foreach ($query as $item) {
                 $app_con .= "," . $item['gid'];
             }
         }
         $app_con .= ")";
     }
     $query = DcmdApp::find()->where($app_con)->orderBy('app_name')->asArray()->all();
     $app = array();
     foreach ($query as $item) {
         $app[$item['app_id']] = $item['app_name'];
     }
     if (array_key_exists('DcmdServicePoolSearch', $params)) {
         if (!array_key_exists($params['DcmdServicePoolSearch']['app_id'], $app)) {
             $params['DcmdServicePoolSearch']['svr_id'] = "";
         }
     }
     $svr = array();
     if (array_key_exists('DcmdServicePoolSearch', $params) && array_key_exists('app_id', $params['DcmdServicePoolSearch'])) {
         $query = DcmdService::find()->andWhere(['app_id' => $params['DcmdServicePoolSearch']['app_id']])->asArray()->all();
         if ($query) {
             foreach ($query as $item) {
                 $svr[$item['svr_id']] = $item['svr_name'];
             }
         }
     }
     if (array_key_exists('DcmdServicePoolSearch', $params)) {
         if (!array_key_exists($params['DcmdServicePoolSearch']['svr_id'], $svr)) {
             $params['DcmdServicePoolSearch']['svr_id'] = "";
         }
     }
     $searchModel = new DcmdServicePoolSearch();
     $dataProvider = $searchModel->search($params);
     return $this->render('index', ['searchModel' => $searchModel, 'dataProvider' => $dataProvider, 'app' => $app, 'svr' => $svr]);
 }
 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'));
 }
 public function actionGetServices()
 {
     $app_id = Yii::$app->request->post()["app_id"];
     $query = DcmdService::find()->andWhere(['app_id' => $app_id])->asArray()->all();
     $retcontent = "";
     if ($query) {
         foreach ($query as $item) {
             $retcontent .= $item["svr_id"] . "," . $item['svr_name'] . ";";
         }
     }
     echo $retcontent;
     exit;
 }
 public function actionDeleteAll()
 {
     if (!array_key_exists('selection', Yii::$app->request->post())) {
         Yii::$app->getSession()->setFlash('error', '未选择产品!');
         return $this->redirect(['index']);
     }
     $select = Yii::$app->request->post()['selection'];
     $suc_msg = "";
     $err_msg = "";
     foreach ($select as $k => $id) {
         $model = $this->findModel($id);
         ///判断用户所属的系统组是否和该应用相同
         $query = DcmdUserGroup::findOne(['uid' => Yii::$app->user->getId(), 'gid' => $model['sa_gid']]);
         if ($query == NULL) {
             $err_msg .= $model->app_name . ":没有权限删除<br>";
             continue;
         }
         $node = DcmdService::find()->where(['app_id' => $id])->one();
         if ($node) {
             $err_msg .= $model->app_name . '该产品的服务非空,不可删除<br>';
             continue;
         } else {
             $suc_msg .= $model->app_name . ':删除成功<br>';
             $this->oprlog(3, "delete app:" . $model->app_name);
         }
         $this->deleteDiagram($id);
         $model->delete();
     }
     if ($suc_msg) {
         Yii::$app->getSession()->setFlash('success', $suc_msg);
     }
     if ($err_msg) {
         Yii::$app->getSession()->setFlash('error', $err_msg);
     }
     return $this->redirect(['index']);
 }
 /**
  * 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]);
     }
 }