/**
  * Displays a single DcmdServicePool model.
  * @param integer $id
  * @return mixed
  */
 public function actionView($id)
 {
     $searchModel = new DcmdServicePoolNodeSearch();
     $con = array();
     $con['DcmdServicePoolNodeSearch'] = array('svr_pool_id' => $id);
     if (array_key_exists('DcmdServicePoolNodeSearch', Yii::$app->request->queryParams)) {
         $con = array_merge($con, Yii::$app->request->queryParams);
     }
     $con['DcmdServicePoolNodeSearch']['svr_pool_id'] = $id;
     $dataProvider = $searchModel->search($con, false);
     $show_div = "dcmd-service-pool-node";
     if (array_key_exists("show_div", Yii::$app->request->queryParams)) {
         $show_div = Yii::$app->request->queryParams['show_div'];
     }
     ///获取属性
     $self_attr = DcmdServicePoolAttr::find()->andWhere(['svr_pool_id' => $id])->asArray()->all();
     $def_attr = DcmdServicePoolAttrDef::find()->asArray()->all();
     $attr_str = '<div id="w1" class="grid-view">
       <table class="table table-striped table-bordered"><thead>
       <tr><th>属性名</th><th>值</th><th>操作</th></tr>
       </thead><tbody>';
     $attr = array();
     foreach ($self_attr as $item) {
         $attr_str .= '<tr><td>' . $item['attr_name'] . '</td><td>' . $item['attr_value'] . '</td><td><a href="/ducter/index.php?r=dcmd-service-pool-attr/update&id=' . $item['id'] . '&svr_pool_id=' . $id . '">修改</a></td></tr>';
         $attr[$item['attr_name']] = $item['attr_name'];
     }
     foreach ($def_attr as $item) {
         if (array_key_exists($item['attr_name'], $attr)) {
             continue;
         }
         $attr_str .= '<tr><td>' . $item['attr_name'] . '</td><td>' . $item['def_value'] . '</td><td><a href="/ducter/index.php?r=dcmd-service-pool-attr/update&id=0&attr_id=' . $item['attr_id'] . '&svr_pool_id=' . $id . '">修改</a></td></tr>';
     }
     $attr_str .= "</tbody></table></div>";
     return $this->render('view', ['svr_pool_id' => $id, 'model' => $this->findModel($id), 'searchModel' => $searchModel, 'dataProvider' => $dataProvider, 'show_div' => $show_div, 'attr_str' => $attr_str]);
 }
 /**
  * Lists all DcmdServicePoolNode models.
  * @return mixed
  */
 public function actionIndex()
 {
     $params = array();
     if (array_key_exists('DcmdServicePoolNodeSearch', Yii::$app->request->queryParams)) {
         $params['DcmdServicePoolNodeSearch'] = Yii::$app->request->queryParams['DcmdServicePoolNodeSearch'];
         if ($params['DcmdServicePoolNodeSearch']['app_id'] == "") {
             $params['DcmdServicePoolNodeSearch']['svr_id'] = "";
         }
         if ($params['DcmdServicePoolNodeSearch']['svr_id'] == "") {
             $params['DcmdServicePoolNodeSearch']['svr_pool_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_alias'];
     }
     $svr = array();
     if (array_key_exists('DcmdServicePoolNodeSearch', $params) && array_key_exists('app_id', $params['DcmdServicePoolNodeSearch'])) {
         $query = DcmdService::find()->andWhere(['app_id' => $params['DcmdServicePoolNodeSearch']['app_id']])->asArray()->all();
         if ($query) {
             foreach ($query as $item) {
                 $svr[$item['svr_id']] = $item['svr_name'];
             }
         }
         if (!array_key_exists($params['DcmdServicePoolNodeSearch']['svr_id'], $svr)) {
             $params['DcmdServicePoolNodeSearch']['svr_id'] = "";
         }
     }
     $svr_pool = array();
     if (array_key_exists('DcmdServicePoolNodeSearch', $params) && array_key_exists('svr_id', $params['DcmdServicePoolNodeSearch']) && array_key_exists($params['DcmdServicePoolNodeSearch']['svr_id'], $svr)) {
         $query = DcmdServicePool::find()->andWhere(['svr_id' => $params['DcmdServicePoolNodeSearch']['svr_id']])->asArray()->all();
         if ($query) {
             foreach ($query as $item) {
                 $svr_pool[$item['svr_pool_id']] = $item['svr_pool'];
             }
         }
     }
     if (array_key_exists('DcmdServicePoolNodeSearch', $params)) {
         if (!array_key_exists($params['DcmdServicePoolNodeSearch']['svr_pool_id'], $svr_pool)) {
             $params['DcmdServicePoolNodeSearch']['svr_pool_id'] = "";
         }
     }
     $searchModel = new DcmdServicePoolNodeSearch();
     $dataProvider = $searchModel->search($params);
     return $this->render('index', ['searchModel' => $searchModel, 'dataProvider' => $dataProvider, 'app' => $app, 'svr' => $svr, 'svr_pool' => $svr_pool]);
 }
 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]);
 }