<s> """<STR_LIT>""" <EOL> revision = '<STR_LIT>' <EOL> down_revision = '<STR_LIT>' <EOL> from alembic import op <EOL> from oslo_serialization import jsonutils <EOL> import sqlalchemy as sa <EOL> from sqlalchemy . sql import text <EOL> from nailgun import consts <EOL> from nailgun . db . sqlalchemy . models . fields import JSON <EOL> from nailgun . utils . migration import drop_enum <EOL> from nailgun . utils . migration import upgrade_clusters_replaced_info <EOL> from nailgun . utils . migration import upgrade_enum <EOL> from nailgun . utils . migration import upgrade_release_attributes_50_to_51 <EOL> from nailgun . utils . migration import upgrade_release_roles_50_to_51 <EOL> cluster_changes_old = ( <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' <EOL> ) <EOL> cluster_changes_new = consts . CLUSTER_CHANGES <EOL> task_names_old = ( <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' <EOL> ) <EOL> task_names_new = consts . TASK_NAMES <EOL> cluster_statuses_old = ( <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT:error>' , <EOL> '<STR_LIT>' <EOL> ) <EOL> cluster_statuses_new = consts . CLUSTER_STATUSES <EOL> notification_topics_old = ( <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT:error>' , <EOL> '<STR_LIT>' , <EOL> ) <EOL> notification_topics_new = consts . NOTIFICATION_TOPICS <EOL> neutron_l23_providers_old = ( <EOL> '<STR_LIT>' <EOL> ) <EOL> neutron_l23_providers_new = consts . NEUTRON_L23_PROVIDERS <EOL> def upgrade ( ) : <EOL> upgrade_schema ( ) <EOL> upgrade_data ( ) <EOL> def upgrade_schema ( ) : <EOL> op . add_column ( <EOL> '<STR_LIT>' , <EOL> sa . Column ( <EOL> '<STR_LIT>' , <EOL> JSON ( ) , <EOL> nullable = False , <EOL> server_default = '<STR_LIT>' <EOL> ) <EOL> ) <EOL> op . add_column ( <EOL> '<STR_LIT>' , <EOL> sa . Column ( <EOL> '<STR_LIT>' , <EOL> JSON ( ) , <EOL> nullable = True <EOL> ) <EOL> ) <EOL> op . add_column ( <EOL> '<STR_LIT>' , <EOL> sa . Column ( <EOL> '<STR_LIT>' , <EOL> sa . Integer ( ) , <EOL> nullable = True <EOL> ) <EOL> ) <EOL> op . create_foreign_key ( <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> [ '<STR_LIT>' ] , <EOL> [ '<STR_LIT:id>' ] , <EOL> ) <EOL> upgrade_enum ( <EOL> "<STR_LIT>" , <EOL> "<STR_LIT:status>" , <EOL> "<STR_LIT>" , <EOL> cluster_statuses_old , <EOL> cluster_statuses_new <EOL> ) <EOL> upgrade_enum ( <EOL> "<STR_LIT>" , <EOL> "<STR_LIT:name>" , <EOL> "<STR_LIT>" , <EOL> task_names_old , <EOL> task_names_new <EOL> ) <EOL> upgrade_enum ( <EOL> "<STR_LIT>" , <EOL> "<STR_LIT>" , <EOL> "<STR_LIT>" , <EOL> notification_topics_old , <EOL> notification_topics_new , <EOL> ) <EOL> upgrade_enum ( <EOL> "<STR_LIT>" , <EOL> "<STR_LIT:name>" , <EOL> "<STR_LIT>" , <EOL> cluster_changes_old , <EOL> cluster_changes_new <EOL> ) <EOL> upgrade_enum ( <EOL> "<STR_LIT>" , <EOL> "<STR_LIT>" , <EOL> "<STR_LIT>" , <EOL> neutron_l23_providers_old , <EOL> neutron_l23_providers_new <EOL> ) <EOL> op . drop_table ( '<STR_LIT>' ) <EOL> drop_enum ( '<STR_LIT>' ) <EOL> op . add_column ( '<STR_LIT>' , sa . Column ( <EOL> '<STR_LIT>' , JSON ( ) , nullable = True ) ) <EOL> op . add_column ( '<STR_LIT>' , sa . Column ( <EOL> '<STR_LIT>' , JSON ( ) , nullable = True ) ) <EOL> def upgrade_data ( ) : <EOL> connection = op . get_bind ( ) <EOL> upgrade_releases ( connection ) <EOL> upgrade_clusters_replaced_info ( connection ) <EOL> def upgrade_releases ( connection ) : <EOL> select = text ( <EOL> """<STR_LIT>""" ) <EOL> update = text ( <EOL> """<STR_LIT>""" ) <EOL> r = connection . execute ( select ) <EOL> for release in r : <EOL> attrs_meta = upgrade_release_attributes_50_to_51 ( <EOL> jsonutils . loads ( release [ <NUM_LIT:1> ] ) ) <EOL> roles_meta = upgrade_release_roles_50_to_51 ( <EOL> jsonutils . loads ( release [ <NUM_LIT:2> ] ) ) <EOL> connection . execute ( <EOL> update , <EOL> id = release [ <NUM_LIT:0> ] , <EOL> attrs = jsonutils . dumps ( attrs_meta ) , <EOL> roles = jsonutils . dumps ( roles_meta ) , <EOL> wiz_meta = jsonutils . dumps ( _wizard_meta ) <EOL> ) <EOL> def downgrade ( ) : <EOL> downgrade_data ( ) <EOL> downgrade_schema ( ) <EOL> def downgrade_schema ( ) : <EOL> op . drop_column ( '<STR_LIT>' , '<STR_LIT>' ) <EOL> op . drop_column ( '<STR_LIT>' , '<STR_LIT>' ) <EOL> upgrade_enum ( <EOL> "<STR_LIT>" , <EOL> "<STR_LIT>" , <EOL> "<STR_LIT>" , <EOL> neutron_l23_providers_new , <EOL> neutron_l23_providers_old <EOL> ) <EOL> upgrade_enum ( <EOL> "<STR_LIT>" , <EOL> "<STR_LIT:name>" , <EOL> "<STR_LIT>" , <EOL> cluster_changes_new , <EOL> cluster_changes_old , <EOL> ) <EOL> upgrade_enum ( <EOL> "<STR_LIT>" , <EOL> "<STR_LIT>" , <EOL> "<STR_LIT>" , <EOL> notification_topics_new , <EOL> notification_topics_old , <EOL> ) <EOL> upgrade_enum ( <EOL> "<STR_LIT>" , <EOL> "<STR_LIT:name>" , <EOL> "<STR_LIT>" , <EOL> task_names_new , <EOL> task_names_old <EOL> ) <EOL> upgrade_enum ( <EOL> "<STR_LIT>" , <EOL> "<STR_LIT:status>" , <EOL> "<STR_LIT>" , <EOL> cluster_statuses_new , <EOL> cluster_statuses_old <EOL> ) <EOL> op . drop_constraint ( <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> type_ = '<STR_LIT>' <EOL> ) <EOL> op . drop_column ( '<STR_LIT>' , '<STR_LIT>' ) <EOL> op . drop_column ( '<STR_LIT>' , '<STR_LIT>' ) <EOL> op . create_table ( '<STR_LIT>' , <EOL> sa . Column ( '<STR_LIT:id>' , sa . Integer ( ) , nullable = False ) , <EOL> sa . Column ( '<STR_LIT:username>' , <EOL> sa . String ( length = <NUM_LIT:100> ) , <EOL> nullable = False ) , <EOL> sa . Column ( '<STR_LIT:password>' , <EOL> sa . String ( length = <NUM_LIT:100> ) , <EOL> nullable = False ) , <EOL> sa . Column ( '<STR_LIT>' , sa . Enum ( '<STR_LIT>' , '<STR_LIT>' , <EOL> name = '<STR_LIT>' ) , <EOL> nullable = False ) , <EOL> sa . Column ( '<STR_LIT>' , <EOL> sa . String ( length = <NUM_LIT> ) , <EOL> nullable = False ) , <EOL> sa . Column ( '<STR_LIT>' , <EOL> sa . String ( length = <NUM_LIT> ) , <EOL> nullable = False ) , <EOL> sa . PrimaryKeyConstraint ( '<STR_LIT:id>' ) <EOL> ) <EOL> def downgrade_data ( ) : <EOL> pass <EOL> _wizard_meta = { <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT:type>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : [ <EOL> { <EOL> "<STR_LIT:data>" : "<STR_LIT>" , <EOL> "<STR_LIT:label>" : "<STR_LIT>" <EOL> } , <EOL> { <EOL> "<STR_LIT:data>" : "<STR_LIT>" , <EOL> "<STR_LIT:label>" : "<STR_LIT>" <EOL> } <EOL> ] <EOL> } <EOL> } , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT:type>" : "<STR_LIT>" , <EOL> "<STR_LIT:value>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : <NUM_LIT:5> , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : [ <EOL> { <EOL> "<STR_LIT:data>" : "<STR_LIT>" , <EOL> "<STR_LIT:label>" : "<STR_LIT>" , <EOL> "<STR_LIT:description>" : "<STR_LIT>" <EOL> "<STR_LIT>" <EOL> } , <EOL> { <EOL> "<STR_LIT:data>" : "<STR_LIT>" , <EOL> "<STR_LIT:label>" : "<STR_LIT>" , <EOL> "<STR_LIT:description>" : "<STR_LIT>" <EOL> "<STR_LIT>" <EOL> } , <EOL> { <EOL> "<STR_LIT:data>" : "<STR_LIT>" , <EOL> "<STR_LIT:label>" : "<STR_LIT>" , <EOL> "<STR_LIT:description>" : "<STR_LIT>" <EOL> "<STR_LIT>" <EOL> } <EOL> ] <EOL> } , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT:type>" : "<STR_LIT:text>" , <EOL> "<STR_LIT:label>" : "<STR_LIT>" , <EOL> "<STR_LIT:description>" : "<STR_LIT>" <EOL> "<STR_LIT>" , <EOL> "<STR_LIT>" : <NUM_LIT:10> , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : [ <EOL> { <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT:action>" : "<STR_LIT>" , <EOL> "<STR_LIT:message>" : None <EOL> } <EOL> ] , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT:source>" : "<STR_LIT>" <EOL> "<STR_LIT>" <EOL> "<STR_LIT>" , <EOL> "<STR_LIT:error>" : "<STR_LIT>" <EOL> "<STR_LIT>" <EOL> } <EOL> } , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT:type>" : "<STR_LIT:text>" , <EOL> "<STR_LIT:label>" : "<STR_LIT>" , <EOL> "<STR_LIT:description>" : "<STR_LIT>" <EOL> "<STR_LIT>" , <EOL> "<STR_LIT>" : <NUM_LIT:20> , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : [ <EOL> { <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT:action>" : "<STR_LIT>" , <EOL> "<STR_LIT:message>" : None <EOL> } <EOL> ] , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT:source>" : "<STR_LIT>" , <EOL> "<STR_LIT:error>" : "<STR_LIT>" <EOL> "<STR_LIT>" <EOL> } <EOL> } , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT:type>" : "<STR_LIT:password>" , <EOL> "<STR_LIT:label>" : "<STR_LIT>" , <EOL> "<STR_LIT:description>" : "<STR_LIT>" <EOL> "<STR_LIT>" , <EOL> "<STR_LIT>" : <NUM_LIT:30> , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : [ <EOL> { <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT:action>" : "<STR_LIT>" , <EOL> "<STR_LIT:message>" : None <EOL> } <EOL> ] , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT:source>" : "<STR_LIT>" , <EOL> "<STR_LIT:error>" : "<STR_LIT>" <EOL> "<STR_LIT>" <EOL> } <EOL> } , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT:type>" : "<STR_LIT:text>" , <EOL> "<STR_LIT:label>" : "<STR_LIT>" , <EOL> "<STR_LIT:description>" : "<STR_LIT>" <EOL> "<STR_LIT>" , <EOL> "<STR_LIT>" : <NUM_LIT> , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : [ <EOL> { <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT:action>" : "<STR_LIT>" , <EOL> "<STR_LIT:message>" : None <EOL> } <EOL> ] , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT:source>" : "<STR_LIT>" <EOL> "<STR_LIT>" , <EOL> "<STR_LIT:error>" : "<STR_LIT>" <EOL> "<STR_LIT>" <EOL> } <EOL> } <EOL> } , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT:type>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : [ <EOL> { <EOL> "<STR_LIT:data>" : "<STR_LIT>" , <EOL> "<STR_LIT:label>" : "<STR_LIT>" <EOL> "<STR_LIT>" , <EOL> "<STR_LIT>" : [ <EOL> { <EOL> "<STR_LIT>" : "<STR_LIT>" <EOL> } <EOL> ] <EOL> } , <EOL> { <EOL> "<STR_LIT:data>" : "<STR_LIT>" , <EOL> "<STR_LIT:label>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : [ <EOL> { <EOL> "<STR_LIT>" : "<STR_LIT>" <EOL> "<STR_LIT>" <EOL> } <EOL> ] , <EOL> "<STR_LIT>" : [ <EOL> { <EOL> "<STR_LIT>" : "<STR_LIT>" <EOL> } , <EOL> { <EOL> "<STR_LIT>" : "<STR_LIT>" <EOL> } <EOL> ] <EOL> } , <EOL> { <EOL> "<STR_LIT:data>" : "<STR_LIT>" , <EOL> "<STR_LIT:label>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : [ <EOL> { <EOL> "<STR_LIT>" : "<STR_LIT>" <EOL> "<STR_LIT>" <EOL> } <EOL> ] , <EOL> "<STR_LIT>" : [ <EOL> { <EOL> "<STR_LIT>" : "<STR_LIT>" <EOL> } , <EOL> { <EOL> "<STR_LIT>" : "<STR_LIT>" <EOL> } <EOL> ] <EOL> } , <EOL> { <EOL> "<STR_LIT:data>" : "<STR_LIT>" , <EOL> "<STR_LIT:label>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : [ <EOL> { <EOL> "<STR_LIT>" : "<STR_LIT>" <EOL> "<STR_LIT>" <EOL> } , <EOL> { <EOL> "<STR_LIT>" : "<STR_LIT>" <EOL> "<STR_LIT>" , <EOL> "<STR_LIT:action>" : "<STR_LIT>" , <EOL> "<STR_LIT:message>" : "<STR_LIT>" <EOL> "<STR_LIT>" <EOL> "<STR_LIT>" <EOL> } , <EOL> { <EOL> "<STR_LIT>" : "<STR_LIT>" <EOL> "<STR_LIT>" <EOL> "<STR_LIT>" <EOL> "<STR_LIT>" , <EOL> "<STR_LIT:action>" : "<STR_LIT:none>" , <EOL> "<STR_LIT:message>" : "<STR_LIT>" <EOL> "<STR_LIT>" <EOL> } <EOL> ] , <EOL> "<STR_LIT>" : [ <EOL> { <EOL> "<STR_LIT>" : "<STR_LIT>" <EOL> } , <EOL> { <EOL> "<STR_LIT>" : "<STR_LIT>" <EOL> } , <EOL> { <EOL> "<STR_LIT>" : "<STR_LIT>" <EOL> } , <EOL> { <EOL> "<STR_LIT>" : True <EOL> } <EOL> ] <EOL> } <EOL> ] <EOL> } <EOL> } , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT:type>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : [ <EOL> { <EOL> "<STR_LIT:data>" : "<STR_LIT:default>" , <EOL> "<STR_LIT:label>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : [ <EOL> { <EOL> "<STR_LIT>" : True <EOL> } <EOL> ] <EOL> } , <EOL> { <EOL> "<STR_LIT:data>" : "<STR_LIT>" , <EOL> "<STR_LIT:label>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : [ <EOL> { <EOL> "<STR_LIT>" <EOL> "<STR_LIT>" : "<STR_LIT>" <EOL> "<STR_LIT>" <EOL> } , <EOL> { <EOL> "<STR_LIT>" : "<STR_LIT>" <EOL> "<STR_LIT>" <EOL> "<STR_LIT>" <EOL> } , <EOL> { <EOL> "<STR_LIT>" : "<STR_LIT>" <EOL> "<STR_LIT>" <EOL> } <EOL> ] , <EOL> "<STR_LIT>" : [ <EOL> { <EOL> "<STR_LIT>" : True <EOL> } , <EOL> { <EOL> "<STR_LIT>" : False <EOL> } <EOL> ] <EOL> } <EOL> ] <EOL> } , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT:type>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : [ <EOL> { <EOL> "<STR_LIT:data>" : "<STR_LIT:default>" , <EOL> "<STR_LIT:label>" : "<STR_LIT>" <EOL> } , <EOL> { <EOL> "<STR_LIT:data>" : "<STR_LIT>" , <EOL> "<STR_LIT:label>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : [ <EOL> { <EOL> "<STR_LIT>" <EOL> "<STR_LIT>" : "<STR_LIT>" <EOL> "<STR_LIT>" <EOL> } , <EOL> { <EOL> "<STR_LIT>" : "<STR_LIT>" <EOL> "<STR_LIT>" <EOL> "<STR_LIT>" <EOL> } <EOL> ] , <EOL> "<STR_LIT>" : [ <EOL> { <EOL> "<STR_LIT>" : True <EOL> } <EOL> ] <EOL> } <EOL> ] <EOL> } <EOL> } , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT:type>" : "<STR_LIT>" , <EOL> "<STR_LIT:label>" : "<STR_LIT>" , <EOL> "<STR_LIT:description>" : "<STR_LIT>" <EOL> "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : <NUM_LIT:10> <EOL> } , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT:type>" : "<STR_LIT>" , <EOL> "<STR_LIT:label>" : "<STR_LIT>" , <EOL> "<STR_LIT:description>" : "<STR_LIT>" <EOL> "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : <NUM_LIT:20> , <EOL> "<STR_LIT>" : [ <EOL> { <EOL> "<STR_LIT>" : "<STR_LIT>" <EOL> "<STR_LIT>" <EOL> } <EOL> ] <EOL> } , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT:type>" : "<STR_LIT>" , <EOL> "<STR_LIT:label>" : "<STR_LIT>" <EOL> "<STR_LIT>" , <EOL> "<STR_LIT:description>" : "<STR_LIT>" <EOL> "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : <NUM_LIT:30> <EOL> } <EOL> } , <EOL> "<STR_LIT>" : { } <EOL> } </s>
