diff --git a/.gitignore b/.gitignore index 230eabe..1cb2cc3 100644 --- a/.gitignore +++ b/.gitignore @@ -23,11 +23,8 @@ _testmain.go *.test *.prof *.gitattributes -<<<<<<< HEAD *.iml *.ipr *.iws .idea/ -======= ->>>>>>> startfeng/master diff --git a/README.md b/README.md index bbad71b..cca52bf 100644 --- a/README.md +++ b/README.md @@ -101,4 +101,7 @@ $ nohup python runserver.py & ## API [api文档](https://github.com/Terry-Mao/bfs/blob/master/doc/api.md) + ## 更多 + + * [bfs-image-server](github.com/YonkaFang/bfs-image-server) diff --git a/directory/dispatcher.go b/directory/dispatcher.go index 8937019..2b036ea 100644 --- a/directory/dispatcher.go +++ b/directory/dispatcher.go @@ -70,6 +70,7 @@ func (d *Dispatcher) Update(group map[int][]string, if !write { continue } + // calc score for _, sid = range stores { totalAdd, totalAddDelay, restSpace, minScore = 0, 0, 0, 0 diff --git a/gops/gops b/gops/gops deleted file mode 100755 index 355a697..0000000 Binary files a/gops/gops and /dev/null differ diff --git a/gops/models/ops/ops.go b/gops/models/ops/ops.go index d9e1d8a..26df43d 100644 --- a/gops/models/ops/ops.go +++ b/gops/models/ops/ops.go @@ -69,7 +69,7 @@ func (o *Ops)LoadRacks() { ) if racks, err = o.GetRack(); err != nil { - beego.Critical(err) + beego.Error(err) } global.STORES = make(map[string]*types.Store) @@ -90,7 +90,7 @@ func (o *Ops)LoadGroups() { ) if groups, err = o.GetGroup(); err != nil { - beego.Critical(err) + beego.Error(err) } global.IN_GROUP_STORES = make(map[string]*types.Store) @@ -111,13 +111,13 @@ func (o *Ops)LoadGroups() { func (o *Ops)LoadVolumes() { var ( - volumes []*types.Group + volumes []*types.Volume err error - volume *types.Group + volume *types.Volume ) - if volumes, err = o.GetGroup(); err != nil { - beego.Critical(err) + if volumes, err = o.GetVolume(); err != nil { + beego.Error(err) } @@ -178,12 +178,11 @@ func (o *Ops)AddGroup(stores []string, copys, racks int) (err error) { storeId string ) - if len(stores) == 0 || len(stores) % copys != 0 { + if len(stores) == 0 { err = addGroupParamsErr return } - stores = stores[0:copys] groupId = global.MAX_GROUP_ID + 1 for _, storeId = range stores { if err = o.zk.CreateGroup(groupId, storeId); err != nil { @@ -209,7 +208,6 @@ func (o *Ops) AddVolume(groupId uint64, n int) (err error) { for i := 0; i < n; i++ { vid = global.MAX_VOLUME_ID + 1 - beego.Info(vid) for _, store = range group.Stores { if err = o.store.AddVolume(store.Admin, vid); err != nil { diff --git a/gops/models/types/types.go b/gops/models/types/types.go index bb62e0c..f6c0207 100644 --- a/gops/models/types/types.go +++ b/gops/models/types/types.go @@ -8,6 +8,7 @@ type Store struct { Admin string `json:"admin"` Rack string `json:"rack"` Status int `json:"status"` + Volumes []string `json:"volumes"` } type Rack struct { diff --git a/gops/models/zk/zk.go b/gops/models/zk/zk.go index 97550e9..9a6cb7d 100644 --- a/gops/models/zk/zk.go +++ b/gops/models/zk/zk.go @@ -79,7 +79,6 @@ func (z *ZooKeeper) GetRack() (racks []*types.Rack, err error) { if children, _, err = z.c.Children(_rackRoot); err != nil { return } - racks = make([]*types.Rack, len(children)) for i, child := range children { rack = new(types.Rack) @@ -99,6 +98,12 @@ func (z *ZooKeeper) GetRack() (racks []*types.Rack, err error) { if err = json.Unmarshal(data, store); err != nil { return } + + if store.Volumes , _, err = z.c.Children(_rackRoot + "/" + child + "/" + child1); err != nil { + return + } + + store.Ip = strings.Split(store.Stat, ":")[0] rack.Stores[j] = store } diff --git a/gops/static/js/index.js b/gops/static/js/index.js index 1d87972..10ad94a 100644 --- a/gops/static/js/index.js +++ b/gops/static/js/index.js @@ -13,11 +13,13 @@ var myapp = ng.module('myapp', []); var storeInfo = function (host) { window.open("http://" + host + "/info") } -var initFreeVolume = function(host){ +var initFreeVolume = function(host,storeId){ var dailog = $('#initFreeVolumeDialog'); var scope = dailog.scope(); var formData = {} + scope.formData = formData; + scope.storeId = storeId formData.host=host; @@ -75,6 +77,8 @@ myapp.controller('freeStore', function ($scope, $http) { }).success(function (data) { if (data.success){ alert("操作成功") + var dailog = $('#freeStoreDialog'); + dailog.modal('hide'); } }) } diff --git a/gops/views/codis.tpl b/gops/views/codis.tpl deleted file mode 100644 index 0a21c69..0000000 --- a/gops/views/codis.tpl +++ /dev/null @@ -1,361 +0,0 @@ - - - - - Codis - - - - - - - - - - - - - -
-
-
-
-

Overview - -

- - - - - - -
Product Name: - [[ product ]] -
Keys: - [[ keys ]] -
Mem Used: - [[ memUsed ]] MB -
Performace: - [[ ops ]] OP/s -
-
-
- -
-
-
-
-
-
-

Server Groups - -

-

- -

-
-
-
-
-
-
group_[[ group.id ]] - -
- - -
-
-
- - - - - -
Addr - Type - Mem Used - Keys - -
[[ server.addr ]] - [[ server.type ]] - [[ serverInfo.used_memory_human ]] / [[ serverInfo.maxmemory / (1024 * 1024 * - 1024.0) ]] GB - [[ serverInfo.db0 ]] - - -
-
-
-
-
-
-
-
-

Slot Control

- -

- -

- - - Slots Status
-

-
-
-
-
-
-

Migrate Status - -

-

- -

- - -
-

-
Migrate Task - Info
- - - - -
Migrate Slot - New Group - Create At - Status - Percent -
slot_[[ task.slot_id ]] - group_[[ task.new_group ]] - [[ task.create_at * 1000| date:'yyyy-MM-dd HH:mm:ss Z']] - [[ task.status]] - [[ task.percent ]] % -
-
Migrating Slot Info
- - - - -
Slot Id - Current Owner Group - Migrate From - Migrate To - Remain Keys -
slot_[[ slot.id ]] - group_[[ slot.group_id ]] - [[slot.state.migrate_status.from ]] - [[slot.state.migrate_status.to ]] - [[ slotInfo.keys ]] -
-
-
-
-
-
-
-

Proxy Status - -

- - - - - -
Proxy Name - Proxy Addr - Proxy DebugVars Addr - Proxy Status - -

[[proxy.id]]

-
[[proxy.addr]] - [[proxy.debug_var_addr]] - [[proxy.state]] - [[proxy.state]] - - - -
-
No proxies
-
-
-
- - diff --git a/gops/views/index.tpl b/gops/views/index.tpl index 99e04de..5c80a3f 100644 --- a/gops/views/index.tpl +++ b/gops/views/index.tpl @@ -30,35 +30,36 @@ +
+ - -
- +
+
+ - +
- @@ -100,20 +101,20 @@ @@ -122,29 +123,31 @@
-

机架信息

+

Racks View

-
-
+
+
{{rack.name}}
- - - + + + + - + +
StoreIp操作StoreIpVolumesOp
{{store.id}} {{store.ip}}{{volumeId}}, - - +
@@ -155,9 +158,9 @@
-

分组信息 -

@@ -168,32 +171,34 @@
-
-
+
+
group_{{ group.id }}
- - - + + + + - + +
StoreIp操作StoreIpVolumesOp
{{store.id}} {{store.ip}}{{volumeId}}, - - +