Skip to content

Commit

Permalink
chore(dp): Move desired state from active mode config to cbsd (magma#…
Browse files Browse the repository at this point in the history
…12538)

Also remove active mode config table.

Signed-off-by: Kuba Marciniszyn <kuba@freedomfi.com>
  • Loading branch information
jkmar authored and emakeev committed Aug 5, 2022
1 parent 8f1d11d commit 124ff11
Show file tree
Hide file tree
Showing 17 changed files with 152 additions and 246 deletions.
24 changes: 7 additions & 17 deletions dp/cloud/go/services/dp/storage/cbsd_manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -133,28 +133,18 @@ func (c *cbsdManagerInTransaction) createCbsdWithActiveModeConfig(networkId stri
if err != nil {
return err
}
data.StateId = db.MakeInt(unregisteredState)
data.NetworkId = db.MakeString(networkId)
columns := append(getCbsdWriteFields(), "state_id", "network_id")
id, err := db.NewQuery().
WithBuilder(c.builder).
From(data).
Select(db.NewIncludeMask(columns...)).
Insert()
if err != nil {
return err
}
registeredState, err := c.cache.getValue(c.builder, &DBCbsdState{}, "registered")
if err != nil {
return err
}
data.StateId = db.MakeInt(unregisteredState)
data.DesiredStateId = db.MakeInt(registeredState)
data.NetworkId = db.MakeString(networkId)
columns := append(getCbsdWriteFields(), "state_id", "desired_state_id", "network_id")
_, err = db.NewQuery().
WithBuilder(c.builder).
From(&DBActiveModeConfig{
CbsdId: db.MakeInt(id),
DesiredStateId: db.MakeInt(registeredState),
}).
Select(db.NewIncludeMask("cbsd_id", "desired_state_id")).
From(data).
Select(db.NewIncludeMask(columns...)).
Insert()
return err
}
Expand Down Expand Up @@ -248,7 +238,7 @@ func buildDetailedCbsdQuery(builder sq.StatementBuilderType) *db.Query {
return db.NewQuery().
WithBuilder(builder).
From(&DBCbsd{}).
Select(db.NewExcludeMask("network_id", "state_id",
Select(db.NewExcludeMask("network_id", "state_id", "desired_state_id",
"is_deleted", "should_deregister", "grant_attempts")).
Join(db.NewQuery().
From(&DBCbsdState{}).
Expand Down
38 changes: 11 additions & 27 deletions dp/cloud/go/services/dp/storage/cbsd_manager_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,6 @@ func (s *CbsdManagerTestSuite) SetupSuite() {
err = s.resourceManager.CreateTables(
&storage.DBCbsdState{},
&storage.DBCbsd{},
&storage.DBActiveModeConfig{},
&storage.DBGrantState{},
&storage.DBGrant{},
)
Expand Down Expand Up @@ -77,7 +76,6 @@ func (s *CbsdManagerTestSuite) SetupSuite() {
func (s *CbsdManagerTestSuite) TearDownTest() {
err := s.resourceManager.DropResources(
&storage.DBCbsd{},
&storage.DBActiveModeConfig{},
&storage.DBGrant{},
)
s.Require().NoError(err)
Expand All @@ -96,10 +94,16 @@ func (s *CbsdManagerTestSuite) TestCreateCbsd() {
actual, err := db.NewQuery().
WithBuilder(s.resourceManager.GetBuilder()).
From(&storage.DBCbsd{}).
Select(db.NewExcludeMask("id", "state_id")).
Select(db.NewExcludeMask("id", "state_id", "desired_state_id")).
Join(db.NewQuery().
From(&storage.DBCbsdState{}).
On(db.On(storage.CbsdTable, "state_id", storage.CbsdStateTable, "id")).
As("t1").
On(db.On(storage.CbsdTable, "state_id", "t1", "id")).
Select(db.NewIncludeMask("name"))).
Join(db.NewQuery().
From(&storage.DBCbsdState{}).
As("t2").
On(db.On(storage.CbsdTable, "desired_state_id", "t2", "id")).
Select(db.NewIncludeMask("name"))).
Where(sq.Eq{"cbsd_serial_number": "some_serial_number"}).
Fetch()
Expand All @@ -113,29 +117,7 @@ func (s *CbsdManagerTestSuite) TestCreateCbsd() {
expected := []db.Model{
cbsd,
&storage.DBCbsdState{Name: db.MakeString("unregistered")},
}
s.Assert().Equal(expected, actual)

actual, err = db.NewQuery().
WithBuilder(s.resourceManager.GetBuilder()).
From(&storage.DBActiveModeConfig{}).
Select(db.NewIncludeMask()).
Join(db.NewQuery().
From(&storage.DBCbsdState{}).
On(db.On(storage.CbsdStateTable, "id", storage.ActiveModeConfigTable, "desired_state_id")).
Select(db.NewIncludeMask("name"))).
Join(db.NewQuery().
From(&storage.DBCbsd{}).
On(db.On(storage.CbsdTable, "id", storage.ActiveModeConfigTable, "cbsd_id")).
Select(db.NewIncludeMask())).
Where(sq.Eq{"cbsd_serial_number": "some_serial_number"}).
Fetch()
s.Require().NoError(err)

expected = []db.Model{
&storage.DBActiveModeConfig{},
&storage.DBCbsdState{Name: db.MakeString("registered")},
&storage.DBCbsd{},
}
s.Assert().Equal(expected, actual)
})
Expand Down Expand Up @@ -189,7 +171,8 @@ func (s *CbsdManagerTestSuite) TestUpdateCbsd() {
actual, err := db.NewQuery().
WithBuilder(s.resourceManager.GetBuilder()).
From(&storage.DBCbsd{}).
Select(db.NewExcludeMask("id", "state_id", "cbsd_id", "grant_attempts", "is_deleted")).
Select(db.NewExcludeMask("id", "state_id", "desired_state_id",
"cbsd_id", "grant_attempts", "is_deleted")).
Where(sq.Eq{"id": cbsdId}).
Fetch()
s.Require().NoError(err)
Expand Down Expand Up @@ -531,6 +514,7 @@ func getCbsd(networkId string, stateId int64) *storage.DBCbsd {
base := getBaseCbsd()
base.NetworkId = db.MakeString(networkId)
base.StateId = db.MakeInt(stateId)
base.DesiredStateId = db.MakeInt(stateId)
base.CbsdId = db.MakeString("some_cbsd_id")
base.ShouldDeregister = db.MakeBool(false)
base.IsDeleted = db.MakeBool(false)
Expand Down
46 changes: 7 additions & 39 deletions dp/cloud/go/services/dp/storage/models.go
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,7 @@ type DBCbsd struct {
Id sql.NullInt64
NetworkId sql.NullString
StateId sql.NullInt64
DesiredStateId sql.NullInt64
CbsdId sql.NullString
UserId sql.NullString
FccId sql.NullString
Expand All @@ -228,6 +229,7 @@ func (c *DBCbsd) Fields() []db.BaseType {
db.IntType{X: &c.Id},
db.StringType{X: &c.NetworkId},
db.IntType{X: &c.StateId},
db.IntType{X: &c.DesiredStateId},
db.StringType{X: &c.CbsdId},
db.StringType{X: &c.UserId},
db.StringType{X: &c.FccId},
Expand Down Expand Up @@ -262,6 +264,11 @@ func (c *DBCbsd) GetMetadata() *db.ModelMetadata {
SqlType: sqorc.ColumnTypeInt,
Relation: CbsdStateTable,
},
{
Name: "desired_state_id",
SqlType: sqorc.ColumnTypeInt,
Relation: CbsdStateTable,
},
{
Name: "cbsd_id",
SqlType: sqorc.ColumnTypeText,
Expand Down Expand Up @@ -340,42 +347,3 @@ func (c *DBCbsd) GetMetadata() *db.ModelMetadata {
},
}
}

type DBActiveModeConfig struct {
Id sql.NullInt64
CbsdId sql.NullInt64
DesiredStateId sql.NullInt64
}

func (amc *DBActiveModeConfig) Fields() []db.BaseType {
return []db.BaseType{
db.IntType{X: &amc.Id},
db.IntType{X: &amc.CbsdId},
db.IntType{X: &amc.DesiredStateId},
}
}

func (amc *DBActiveModeConfig) GetMetadata() *db.ModelMetadata {
return &db.ModelMetadata{
Table: ActiveModeConfigTable,
Properties: []*db.Field{
{
Name: "id",
SqlType: sqorc.ColumnTypeInt,
},
{
Name: "cbsd_id",
SqlType: sqorc.ColumnTypeInt,
Relation: CbsdTable,
},
{
Name: "desired_state_id",
SqlType: sqorc.ColumnTypeInt,
Relation: CbsdStateTable,
},
},
CreateObject: func() db.Model {
return &DBActiveModeConfig{}
},
}
}
39 changes: 6 additions & 33 deletions dp/cloud/go/services/dp/storage/models_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ import (

func TestFields(t *testing.T) {
dbGrant := &storage.DBGrant{}
dbActiveModeConfig := &storage.DBActiveModeConfig{}
dbCbsd := &storage.DBCbsd{}
dbCbsdState := &storage.DBCbsdState{}
dbGrantState := &storage.DBGrantState{}
Expand Down Expand Up @@ -74,6 +73,7 @@ func TestFields(t *testing.T) {
db.IntType{X: &dbCbsd.Id},
db.StringType{X: &dbCbsd.NetworkId},
db.IntType{X: &dbCbsd.StateId},
db.IntType{X: &dbCbsd.DesiredStateId},
db.StringType{X: &dbCbsd.CbsdId},
db.StringType{X: &dbCbsd.UserId},
db.StringType{X: &dbCbsd.FccId},
Expand All @@ -90,15 +90,6 @@ func TestFields(t *testing.T) {
db.BoolType{X: &dbCbsd.ShouldDeregister},
},
},
{
name: "check field names for DBActiveModeConfig",
model: dbActiveModeConfig,
expected: []db.BaseType{
db.IntType{X: &dbActiveModeConfig.Id},
db.IntType{X: &dbActiveModeConfig.CbsdId},
db.IntType{X: &dbActiveModeConfig.DesiredStateId},
},
},
}
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
Expand Down Expand Up @@ -226,6 +217,11 @@ func TestGetMetadata(t *testing.T) {
SqlType: sqorc.ColumnTypeInt,
Relation: storage.CbsdStateTable,
},
{
Name: "desired_state_id",
SqlType: sqorc.ColumnTypeInt,
Relation: storage.CbsdStateTable,
},
{
Name: "cbsd_id",
SqlType: sqorc.ColumnTypeText,
Expand Down Expand Up @@ -301,29 +297,6 @@ func TestGetMetadata(t *testing.T) {
},
},
},
{
name: "check ModelMetadata structure for DBActiveModeConfig",
model: &storage.DBActiveModeConfig{},
expected: db.ModelMetadata{
Table: storage.ActiveModeConfigTable,
Properties: []*db.Field{
{
Name: "id",
SqlType: sqorc.ColumnTypeInt,
},
{
Name: "cbsd_id",
SqlType: sqorc.ColumnTypeInt,
Relation: storage.CbsdTable,
},
{
Name: "desired_state_id",
SqlType: sqorc.ColumnTypeInt,
Relation: storage.CbsdStateTable,
},
},
},
},
}
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ def setUp(self):
cbsd_state = DBCbsdState(name='some_cbsd_state')
cbsd = DBCbsd(
state=cbsd_state,
desired_state=cbsd_state,
fcc_id=SOME_FCC_ID,
cbsd_serial_number=SOME_SERIAL_NUMBER,
network_id=SOME_NETWORK_ID,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@ def _prepare_two_pending_requests(self):
id=int(i),
cbsd_id=f"foo{i}",
state=test_state,
desired_state=test_state,
user_id="test_user",
fcc_id=f"test_fcc_id{i}",
cbsd_serial_number=f"test_serial_nr{i}",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,7 @@ def test_grant_attempts_after_response(self, code, message_type, expected):
cbsd_serial_number=CBSD_SERIAL_NR,
grant_attempts=INITIAL_GRANT_ATTEMPTS,
state=self._get_db_enum(DBCbsdState, CbsdStates.REGISTERED.value),
desired_state=self._get_db_enum(DBCbsdState, CbsdStates.REGISTERED.value),
)
request = DBRequest(
type=self._get_db_enum(DBRequestType, message_type),
Expand Down Expand Up @@ -467,6 +468,7 @@ def _generate_cbsd_from_request_json(self, request_payload: Dict, cbsd_state: DB
cbsd_serial_number=serial_number,
user_id=user_id,
state=cbsd_state,
desired_state=cbsd_state,
)

self.session.add(cbsd)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
"""empty message
Revision ID: e793671a19a6
Revises: 9cd338f28663
Create Date: 2022-04-22 14:41:00.038838
"""
import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql

# revision identifiers, used by Alembic.
revision = 'e793671a19a6'
down_revision = '9cd338f28663'
branch_labels = None
depends_on = None

cbsds = sa.table(
'cbsds',
sa.column('id', sa.Integer),
sa.column('desired_state_id', sa.Integer),
)

active_mode_configs = sa.table(
'active_mode_configs',
sa.column('cbsd_id', sa.Integer),
sa.column('desired_state_id', sa.Integer),
)

cbsd_states = sa.table(
'cbsd_states',
sa.column('id', sa.Integer),
sa.column('name', sa.String),
)


def upgrade():
"""
Run upgrade
"""
op.add_column('cbsds', sa.Column('desired_state_id', sa.Integer()))
op.execute(
cbsds.update().
values(
desired_state_id=sa.select(cbsd_states.c.id).
where(cbsd_states.c.name == 'unregistered').
scalar_subquery(),
),
)
op.execute(
cbsds.update().
values(desired_state_id=active_mode_configs.c.desired_state_id).
where(cbsds.c.id == active_mode_configs.c.cbsd_id),
)
op.alter_column('cbsds', 'desired_state_id', nullable=False)
op.create_foreign_key(None, 'cbsds', 'cbsd_states', ['desired_state_id'], ['id'], ondelete='CASCADE')
op.drop_table('active_mode_configs')
# ### end Alembic commands ###


def downgrade():
"""
Run downgrade
"""
op.create_table(
'active_mode_configs',
sa.Column('id', sa.INTEGER(), autoincrement=True, nullable=False),
sa.Column('cbsd_id', sa.INTEGER(), autoincrement=False, nullable=False),
sa.Column('desired_state_id', sa.INTEGER(), autoincrement=False, nullable=False),
sa.Column('created_date', postgresql.TIMESTAMP(timezone=True), server_default=sa.text('statement_timestamp()'), autoincrement=False, nullable=False),
sa.Column('updated_date', postgresql.TIMESTAMP(timezone=True), server_default=sa.text('statement_timestamp()'), autoincrement=False, nullable=True),
sa.ForeignKeyConstraint(['cbsd_id'], ['cbsds.id'], name='active_mode_configs_cbsd_id_fkey', ondelete='CASCADE'),
sa.ForeignKeyConstraint(['desired_state_id'], ['cbsd_states.id'], name='active_mode_configs_desired_state_id_fkey', ondelete='CASCADE'),
sa.PrimaryKeyConstraint('id', name='active_mode_configs_pkey'),
sa.UniqueConstraint('cbsd_id', name='active_mode_configs_cbsd_id_key'),
)
op.execute(
active_mode_configs.insert().
from_select(['cbsd_id', 'desired_state_id'], sa.select(cbsds.c.id, cbsds.c.desired_state_id)),
)
op.drop_column('cbsds', 'desired_state_id')
# ### end Alembic commands ###

0 comments on commit 124ff11

Please sign in to comment.