Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(dp): Move desired state from active mode config to cbsd #12538

Merged
merged 1 commit into from
Apr 25, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
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 ###