コード例 #1
0
 /**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function search($params, $index = true)
 {
     ///应用组用户只可查看所在组的应用
     $svr_pool_con = "";
     if ($index == true && 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_pool_con = "app_id in (0";
         foreach ($query as $item) {
             $svr_pool_con .= "," . $item['app_id'];
         }
         $svr_pool_con .= ")";
     }
     $query = DcmdServicePoolNode::find()->where($svr_pool_con)->orderBy('ip');
     $dataProvider = new ActiveDataProvider(['query' => $query, 'pagination' => ['pagesize' => 20]]);
     if (!($this->load($params) && $this->validate())) {
         return $dataProvider;
     }
     $query->andFilterWhere(['id' => $this->id, 'svr_pool_id' => $this->svr_pool_id, 'svr_id' => $this->svr_id, 'nid' => $this->nid, 'app_id' => $this->app_id, 'utime' => $this->utime, 'ctime' => $this->ctime, 'opr_uid' => $this->opr_uid]);
     $query->andFilterWhere(['like', 'ip', $this->ip]);
     return $dataProvider;
 }
コード例 #2
0
 /**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function search($params, $unuse = false)
 {
     $con_str = "";
     if ($unuse) {
         $q = DcmdServicePoolNode::find()->asArray()->all();
         $con_str = " ip not in(0";
         foreach ($q as $item) {
             $con_str .= ",'" . $item['ip'] . "'";
         }
         $con_str .= ")";
     }
     $query = DcmdNode::find()->where($con_str)->orderBy('ip');
     $dataProvider = new ActiveDataProvider(['query' => $query, 'pagination' => ['pagesize' => '20']]);
     if (!($this->load($params) && $this->validate())) {
         return $dataProvider;
     }
     $query->andFilterWhere(['nid' => $this->nid, 'ngroup_id' => $this->ngroup_id, 'online_time' => $this->online_time, 'purchase_time' => $this->purchase_time, 'maintain_time' => $this->maintain_time, 'utime' => $this->utime, 'ctime' => $this->ctime, 'opr_uid' => $this->opr_uid]);
     $query->andFilterWhere(['like', 'ip', $this->ip])->andFilterWhere(['like', 'host', $this->host])->andFilterWhere(['like', 'sid', $this->sid])->andFilterWhere(['like', 'did', $this->did])->andFilterWhere(['like', 'os_type', $this->os_type])->andFilterWhere(['like', 'os_ver', $this->os_ver])->andFilterWhere(['like', 'bend_ip', $this->bend_ip])->andFilterWhere(['like', 'public_ip', $this->public_ip])->andFilterWhere(['like', 'mach_room', $this->mach_room])->andFilterWhere(['like', 'rack', $this->rack])->andFilterWhere(['like', 'seat', $this->seat])->andFilterWhere(['like', 'server_brand', $this->server_brand])->andFilterWhere(['like', 'server_model', $this->server_model])->andFilterWhere(['like', 'cpu', $this->cpu])->andFilterWhere(['like', 'memory', $this->memory])->andFilterWhere(['like', 'disk', $this->disk])->andFilterWhere(['like', 'maintain_fac', $this->maintain_fac])->andFilterWhere(['like', 'comment', $this->comment]);
     return $dataProvider;
 }
コード例 #3
0
 public function actionSelectServicePoolNode($task_id)
 {
     ///获取已有的设备ip
     $query = DcmdTaskNode::find()->andWhere(['task_id' => $task_id])->asArray()->all();
     $exist_ips = array();
     foreach ($query as $item) {
         array_push($exist_ips, $item['ip']);
     }
     $task_service_pool = DcmdTaskServicePool::find()->andWhere(['task_id' => $task_id])->asArray()->all();
     $service_pool = array();
     foreach ($task_service_pool as $item) {
         $node = array();
         $node['svr_pool_id'] = $item['svr_pool_id'];
         $node['svr_pool'] = $item['svr_pool'];
         $node['ip'] = array();
         $svr_pool_node = DcmdServicePoolNode::find()->andWhere(['svr_pool_id' => $item['svr_pool_id']])->asArray()->all();
         foreach ($svr_pool_node as $ip) {
             if (array_key_exists($ip['ip'], $exist_ips)) {
                 continue;
             }
             array_push($node['ip'], $ip['ip']);
         }
         array_push($service_pool, $node);
     }
     return $this->render('select_service_pool_node', ['service_pool' => $service_pool, 'task_id' => $task_id, 'task_name' => "task_name"]);
 }
コード例 #4
0
 public function actionShowNodeList($app_id, $svr_id, $svr_pool_id)
 {
     #$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'));
     }
     $node_group = array();
     $exist_nid = array();
     if (array_key_exists("selection", Yii::$app->request->post())) {
         $node_group = Yii::$app->request->post()["selection"];
         $pool_node = DcmdServicePoolNode::find()->where(["svr_pool_id" => $svr_pool_id])->asArray()->all();
         foreach ($pool_node as $item) {
             array_push($exist_nid, $item["nid"]);
         }
     }
     $ngroups = "ngroup_id in (0";
     foreach ($node_group as $key => $value) {
         $ngroups = $ngroups . "," . $value;
     }
     $ngroups = $ngroups . ")";
     $ngroups = $ngroups . " and nid not in (0";
     foreach ($exist_nid as $k => $v) {
         $ngroups = $ngroups . "," . $v;
     }
     $ngroups = $ngroups . ")";
     $query = DcmdNode::find()->where($ngroups)->orderBy('ip');
     $dataProvider = new ActiveDataProvider(['query' => $query, 'pagination' => ['pagesize' => 0]]);
     $searchModel = new DcmdNodeSearch();
     return $this->render('show-node-list', ['dataProvider' => $dataProvider, 'app_id' => $app_id, 'svr_id' => $svr_id, 'svr_pool_id' => $svr_pool_id]);
 }
コード例 #5
0
 public function actionGetAppSvr($id)
 {
     $arr = array();
     ///获取应用命令
     $dcmd_app = $this->findModel($id);
     $arr['name'] = $dcmd_app->app_name;
     $arr['children'] = array();
     ///获取应用
     $query = DcmdService::find()->andWhere(['app_id' => $id])->asArray()->all();
     foreach ($query as $item) {
         $svr = array();
         $svr['name'] = $item['svr_name'];
         $svr['children'] = array();
         ///获取应用池子
         $pool = DcmdServicePool::find()->andWhere(['svr_id' => $item['svr_id']])->asArray()->all();
         foreach ($pool as $p) {
             $svrp = array();
             $svrp['name'] = $p['svr_pool'];
             $svrp['children'] = array();
             ///获取节点
             $node = DcmdServicePoolNode::find()->andWhere(['svr_pool_id' => $p['svr_pool_id']])->asArray()->all();
             foreach ($node as $n) {
                 array_push($svrp['children'], array('name' => $n['ip']));
             }
             array_push($svr['children'], $svrp);
         }
         array_push($arr['children'], $svr);
     }
     return json_encode($arr);
 }
コード例 #6
0
 protected function getSvrPoolNode($id)
 {
     $query = DcmdServicePoolNode::find()->where(['svr_pool_id' => $id])->all();
     $ips = "";
     if ($query) {
         foreach ($query as $item) {
             $ips .= $item->ip . ";";
         }
     }
     return $ips;
 }
コード例 #7
0
 /**
  * Updates an existing DcmdService model.
  * If update is successful, the browser will be redirected to the 'view' page.
  * @param integer $id
  * @return mixed
  */
 public function actionUpdate($id)
 {
     $model = $this->findModel($id);
     ///仅仅用户与该应用在同一个系统组才可以操作
     $temp = DcmdApp::findOne($model['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' => $id));
     }
     if (Yii::$app->request->post()) {
         ///判断节点多池子
         if (Yii::$app->request->post()['DcmdService']['node_multi_pool'] == 0) {
             ///节点不可为多池子
             $ret = DcmdServicePoolNode::find()->andWhere(['svr_id' => $id])->asArray()->all();
             $ips = array();
             foreach ($ret as $item) {
                 if (array_key_exists($item['ip'], $ips)) {
                     Yii::$app->getSession()->setFlash('error', "多个池子存在该IP:" . $item['ip']);
                     return $this->redirect(['dcmd-service/view', 'id' => $id]);
                 }
                 $ips[$item['ip']] = 1;
             }
         }
         $model->utime = date('Y-m-d H:i:s');
         $model->opr_uid = Yii::$app->user->getId();
         if ($model->load(Yii::$app->request->post()) && $model->save()) {
             $this->oprlog(2, "modify service:" . $model->svr_name);
             Yii::$app->getSession()->setFlash('success', '修改成功!');
             return $this->redirect(['view', 'id' => $model->svr_id]);
         }
         $err_str = "";
         foreach ($model->getErrors() as $k => $v) {
             $err_str .= $k . ":" . $v[0] . "<br>";
         }
         Yii::$app->getSession()->setFlash('error', "修改失败:" . $err_str);
     }
     return $this->render('update', ['model' => $model]);
 }
コード例 #8
0
 public function actionAdd($task_id)
 {
     $task_id = Yii::$app->request->queryParams['task_id'];
     $svr_pool_array = array();
     $query = DcmdTaskServicePool::find()->andWhere(['task_id' => $task_id])->asArray()->all();
     foreach ($query as $item) {
         $svr_pool_array[$item['svr_pool_id']] = $item['svr_pool'];
     }
     if (Yii::$app->request->post() && array_key_exists('selection', Yii::$app->request->post())) {
         $ret_msg = "";
         $query = DcmdCenter::findOne(['master' => 1]);
         if ($query) {
             list($host, $port) = explode(':', $query["host"]);
             var_dump(Yii::$app->request->post());
             ///exit;
             $task_id = Yii::$app->request->post()['task_id'];
             $select = Yii::$app->request->post()['selection'];
             foreach ($select as $k => $v) {
                 list($ip, $svr_pool_id) = explode(',', $v);
                 $reply = execTaskCmd($host, $port, $task_id, Yii::$app->user->getId(), 6, NULL, $ip, NULL, $svr_pool_array[$svr_pool_id]);
                 if ($reply->getState() == 0) {
                     $ret_msg .= $ip . ":添加成功 ";
                 } else {
                     $ret_msg .= $ip . ":添加失败:" . $reply->getErr() . " ";
                 }
             }
         } else {
             $ret_msg = "添加失败:无法获取Center!";
         }
         Yii::$app->getSession()->setFlash('success', $ret_msg);
     }
     ///echo "===";
     ////var_dump(Yii::$app->request->queryParams);
     ///获取已经存在池子及对应的ip
     $query = DcmdTaskNode::find()->andWhere(['task_id' => $task_id])->asArray()->all();
     $exist_svr_pool_ip = array();
     foreach ($query as $item) {
         if (array_key_exists($item['svr_pool'], $exist_svr_pool_ip)) {
             array_push($exist_svr_pool_ip[$item['svr_pool']], $item['ip']);
         } else {
             $exist_svr_pool_ip[$item['svr_pool']] = array($item['ip']);
         }
     }
     ///限制服务池子
     $query_con = "(1 = 0)";
     if (array_key_exists('DcmdServicePoolNodeSearch', Yii::$app->request->queryParams) && array_key_exists('svr_pool_id', Yii::$app->request->queryParams['DcmdServicePoolNodeSearch']) && Yii::$app->request->queryParams['DcmdServicePoolNodeSearch']['svr_pool_id'] != '') {
         $query_con .= " or (svr_pool_id = " . $Yii::$app->request->queryParams['DcmdServicePoolNodeSearch']['svr_pool_id'] . " and ip not in (0";
         ///排除该服务池子对应的ip
         $svr_pool = $svr_pool_array($Yii::$app->request->queryParams['DcmdServicePoolNodeSearch']['svr_pool_id']);
         if (array_key_exists($svr_pool, $exist_svr_pool_ip)) {
             foreach ($exist_svr_pool_ip[$svr_pool] as $ip) {
                 $query_con .= ",'" . $ip . "'";
             }
         }
         $query_con .= "))";
     } else {
         foreach ($svr_pool_array as $svr_pool_id => $svr_pool) {
             $query_con .= " or (svr_pool_id = " . $svr_pool_id . " and ip not in (0";
             if (array_key_exists($svr_pool, $exist_svr_pool_ip)) {
                 foreach ($exist_svr_pool_ip[$svr_pool] as $ip) {
                     $query_con .= ",'" . $ip . "'";
                 }
             }
             $query_con .= "))";
         }
     }
     ///echo $query_con;exit;
     ///排除已经存在的ip
     $query = DcmdServicePoolNode::find()->where($query_con);
     $dataProvider = new ActiveDataProvider(['query' => $query, 'pagination' => ['pagesize' => 50]]);
     $searchModel = new DcmdServicePoolNodeSearch();
     $searchModel->load(Yii::$app->request->queryParams);
     return $this->render('add', ['searchModel' => $searchModel, 'dataProvider' => $dataProvider, 'task_id' => $task_id, 'svr_pool' => $svr_pool_array]);
 }
コード例 #9
0
 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);
         ///判断用户是否和该设备池子属于一个系统组
         $tmp = DcmdNodeGroup::findOne($model['ngroup_id']);
         $query = DcmdUserGroup::findOne(['uid' => Yii::$app->user->getId(), 'gid' => $tmp['gid']]);
         if ($query == NULL) {
             $err_msg .= $model->ip . ":没有权限删除<br>";
             continue;
         }
         $node = DcmdServicePoolNode::find()->where(['nid' => $id])->one();
         if ($node) {
             $err_msg .= $model->ip . ':有服务池子使用该设备,不可删除<br>';
             continue;
         } else {
             $this->oprlog(3, "delete node:" . $model->ip);
             $suc_msg .= $model->ip . ':删除成功<br>';
         }
         $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']);
 }