ctrl: Implement a global result for rf_locked
Create a one stop command to give a statement for the entire network. This can be used to check the policy and the state of the entire network.
This commit is contained in:
parent
ca4151984c
commit
66105fd3dc
|
@ -366,8 +366,33 @@ CTRL_CMD_DEFINE_RO(bts_rf_state, "rf_state");
|
||||||
|
|
||||||
static int get_net_rf_lock(struct ctrl_cmd *cmd, void *data)
|
static int get_net_rf_lock(struct ctrl_cmd *cmd, void *data)
|
||||||
{
|
{
|
||||||
cmd->reply = "get only works for the individual trx properties.";
|
struct gsm_network *net = cmd->node;
|
||||||
return CTRL_CMD_ERROR;
|
struct gsm_bts *bts;
|
||||||
|
const char *policy_name;
|
||||||
|
|
||||||
|
policy_name = osmo_bsc_rf_get_policy_name(net->bsc_data->rf_ctrl->policy);
|
||||||
|
|
||||||
|
llist_for_each_entry(bts, &net->bts_list, list) {
|
||||||
|
struct gsm_bts_trx *trx;
|
||||||
|
|
||||||
|
/* Exclude the BTS from the global lock */
|
||||||
|
if (bts->excl_from_rf_lock)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
llist_for_each_entry(trx, &bts->trx_list, list) {
|
||||||
|
if (trx->mo.nm_state.availability == NM_AVSTATE_OK &&
|
||||||
|
trx->mo.nm_state.operational != NM_OPSTATE_DISABLED) {
|
||||||
|
cmd->reply = talloc_asprintf(cmd,
|
||||||
|
"state=on,policy=%s,bts=%u,trx=%u",
|
||||||
|
policy_name, bts->nr, trx->nr);
|
||||||
|
return CTRL_CMD_REPLY;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
cmd->reply = talloc_asprintf(cmd, "state=off,policy=%s",
|
||||||
|
policy_name);
|
||||||
|
return CTRL_CMD_REPLY;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define TIME_FORMAT_RFC2822 "%a, %d %b %Y %T %z"
|
#define TIME_FORMAT_RFC2822 "%a, %d %b %Y %T %z"
|
||||||
|
|
|
@ -305,6 +305,11 @@ class TestCtrlBSC(TestCtrlBase):
|
||||||
self.assertEquals(r['var'], 'bts.0.rf_state')
|
self.assertEquals(r['var'], 'bts.0.rf_state')
|
||||||
self.assertEquals(r['value'], 'inoperational,locked,off')
|
self.assertEquals(r['value'], 'inoperational,locked,off')
|
||||||
|
|
||||||
|
r = self.do_get('rf_locked')
|
||||||
|
self.assertEquals(r['mtype'], 'GET_REPLY')
|
||||||
|
self.assertEquals(r['var'], 'rf_locked')
|
||||||
|
self.assertEquals(r['value'], 'state=off,policy=off')
|
||||||
|
|
||||||
r = self.do_set('rf_locked', '0')
|
r = self.do_set('rf_locked', '0')
|
||||||
self.assertEquals(r['mtype'], 'SET_REPLY')
|
self.assertEquals(r['mtype'], 'SET_REPLY')
|
||||||
self.assertEquals(r['var'], 'rf_locked')
|
self.assertEquals(r['var'], 'rf_locked')
|
||||||
|
@ -317,6 +322,11 @@ class TestCtrlBSC(TestCtrlBase):
|
||||||
self.assertEquals(r['var'], 'bts.0.rf_state')
|
self.assertEquals(r['var'], 'bts.0.rf_state')
|
||||||
self.assertEquals(r['value'], 'inoperational,unlocked,on')
|
self.assertEquals(r['value'], 'inoperational,unlocked,on')
|
||||||
|
|
||||||
|
r = self.do_get('rf_locked')
|
||||||
|
self.assertEquals(r['mtype'], 'GET_REPLY')
|
||||||
|
self.assertEquals(r['var'], 'rf_locked')
|
||||||
|
self.assertEquals(r['value'], 'state=off,policy=on')
|
||||||
|
|
||||||
def testTimezone(self):
|
def testTimezone(self):
|
||||||
r = self.do_get('bts.0.timezone')
|
r = self.do_get('bts.0.timezone')
|
||||||
self.assertEquals(r['mtype'], 'GET_REPLY')
|
self.assertEquals(r['mtype'], 'GET_REPLY')
|
||||||
|
|
Loading…
Reference in New Issue