コード例 #1
0
ファイル: validator.go プロジェクト: jsli/ota
func (ci *CpImage) Validate() (err error) {
	if err := ValidateSim(ci.Sim); err != nil {
		return err
	}
	if err := ValidateNetwork(ci.Network); err != nil {
		return err
	}

	dal, err := release.NewDal()
	if err != nil {
		return fmt.Errorf("Validate dtim error")
	}
	defer dal.Close()

	var image interface{}
	switch ci.Id {
	case ota_constant.ID_ARBI, ota_constant.ID_ARB2:
		image, _ = release.FindArbiByPath(dal, ci.Path)
	case ota_constant.ID_GRBI, ota_constant.ID_GRB2:
		image, _ = release.FindGrbiByPath(dal, ci.Path)
	case ota_constant.ID_RFIC, ota_constant.ID_RFI2:
		image, _ = release.FindRficByPath(dal, ci.Path)
	}

	v := reflect.ValueOf(image)
	if v.IsNil() {
		return fmt.Errorf("Illegal image path in dtim: %s", ci.Path)
	}

	return nil
}
コード例 #2
0
ファイル: scanner.go プロジェクト: jsli/cp_release
func main() {
	dal, err := release.NewDal()
	if err != nil {
		log.Printf("New DAL failed: %s\n", err)
		panic(err)
	}
	defer dal.Close()

	counter := 0
	for {
		counter = counter + 1
		log.Printf("scan %d times ----------------------------begin\n", counter)
		for _, path := range dir_list {
			if exist, err := pathutil.IsExist(path); !exist && err == nil {
				//			pathutil.MkDir(path)
				log.Printf("scan dir error : %s\n", err)
				continue
			}

			mode := constant.PATH_TO_MODE[path]
			sim := constant.MODE_TO_SIM[mode]

			err := ScanDir(dal, path, mode, sim)
			if err != nil {
				log.Printf("Scan PANIC [%s] failed : %s\n", path, err)
				panic(err)
			}
		}
		log.Printf("scan %d times ----------------------------end\n", counter)
		time.Sleep(SCAN_INTERNAL * time.Second)
	}
}
コード例 #3
0
ファイル: monitor.go プロジェクト: jsli/cp_release
func ProcessModifyEvent(event *fsnotify.FileEvent) {
	log.Printf("Modify [%s]\n", event.Name)

	dal, err := release.NewDal()
	if err != nil {
		log.Printf("New DAL failed: %s\n", err)
		return
	}
	defer dal.Close()

	cp := getCpByRelPath(event.Name, dal)
	if cp != nil {
		if cp.Flag == constant.AVAILABLE_FLAG {
			log.Printf("CP release modified, delete arbi&grbi for updating in scanner : %s", cp)
			release.DeleteArbiByCpId(dal, cp.Id)
			release.DeleteGrbiByCpId(dal, cp.Id)
			release.DeleteRficByCpId(dal, cp.Id)
		}
	}
}
コード例 #4
0
ファイル: radio.go プロジェクト: jsli/ota
func (c Radio) Query() revel.Result {
	result := models.NewResult()
	validator := &policy.RadioValidator{}
	dtim_info, err := validator.ValidateAndParseRadioDtim(c.Params)
	if err != nil {
		return c.Render400WithCode(result, ota_constant.ERROR_CODE_INVALIDATED_DTIM, fmt.Sprintf("%s", err))
	}

	dal, err := release.NewDal()
	if err != nil {
		return c.Render500(result, err)
	}
	defer dal.Close()

	err = c.Provider.ProvideQueryData(dal, dtim_info, result)
	if err != nil {
		return c.Render404WithCode(result, ota_constant.ERROR_CODE_NO_AVAILABLE_UPDATE, fmt.Sprintf("%s", err))
	}

	return c.RenderJson(result)
}
コード例 #5
0
ファイル: monitor.go プロジェクト: jsli/cp_release
func ProcessDeleteEvent(event *fsnotify.FileEvent) {
	log.Printf("Delete [%s]\n", event.Name)

	dal, err := release.NewDal()
	if err != nil {
		log.Printf("New DAL failed: %s\n", err)
		return
	}
	defer dal.Close()

	cp := getCpByRelPath(event.Name, dal)
	if cp != nil {
		_, err := cp.Delete(dal)
		if err != nil {
			log.Printf("Delete failed: %s\n", err)
		} else {
			log.Printf("Delete success: %s\n", cp)
			log.Printf("CP release deleted, delete arbi&grbi together : %s", cp)
			release.DeleteArbiByCpId(dal, cp.Id)
			release.DeleteGrbiByCpId(dal, cp.Id)
		}
	}
}