예제 #1
0
class NodeGroup(Base):
    """Represents a NodeGroup."""

    __tablename__ = 'nodegroup'
    __table_args__ = (schema.UniqueConstraint('uuid',
                                              name='uniq_nodegroup0uuid'),
                      schema.UniqueConstraint(
                          'cluster_id',
                          'name',
                          name='uniq_nodegroup0cluster_id0name'), table_args())
    id = Column(Integer, primary_key=True)
    uuid = Column(String(36))
    name = Column(String(255))
    cluster_id = Column(String(255))
    project_id = Column(String(255))
    docker_volume_size = Column(Integer(), nullable=True)
    labels = Column(JSONEncodedDict, nullable=True)
    flavor_id = Column(String(255), nullable=True)
    image_id = Column(String(255), nullable=True)
    node_addresses = Column(JSONEncodedList, nullable=True)
    node_count = Column(Integer())
    role = Column(String(255))
    # NOTE(ttsiouts) We have to define the min and
    # max number of nodes for each nodegroup
    max_node_count = Column(Integer())
    min_node_count = Column(Integer())
    is_default = Column(Boolean, default=False)
    stack_id = Column(String(255))
    status = Column(String(20))
    status_reason = Column(Text)
    version = Column(String(20))
예제 #2
0
def upgrade():
    op.create_table(
        'agents', sa.Column('id', sa.String(length=36), nullable=False),
        sa.Column('agent_type',
                  String(255, mysql_ndb_length=128),
                  nullable=False),
        sa.Column('binary',
                  String(255, mysql_ndb_type=TINYTEXT),
                  nullable=False),
        sa.Column('topic',
                  String(255, mysql_ndb_type=TINYTEXT),
                  nullable=False),
        sa.Column('host', sa.String(length=255), nullable=False),
        sa.Column('admin_state_up',
                  sa.Boolean(),
                  nullable=False,
                  server_default=sa.sql.true()),
        sa.Column('created_at', sa.DateTime(), nullable=False),
        sa.Column('started_at', sa.DateTime(), nullable=False),
        sa.Column('heartbeat_timestamp', sa.DateTime(), nullable=False),
        sa.Column('description', sa.String(length=255), nullable=True),
        sa.Column('configurations',
                  String(4095, mysql_ndb_type=TEXT),
                  nullable=False),
        sa.Column('load', sa.Integer(), server_default='0', nullable=False),
        sa.PrimaryKeyConstraint('id'),
        sa.UniqueConstraint('agent_type',
                            'host',
                            name='uniq_agents0agent_type0host'))
예제 #3
0
def upgrade():
    op.add_column(
        'baymodel',
        sa.Column('coe', String(255, mysql_ndb_type=TINYTEXT), nullable=True))

    baymodel = sa.sql.table(
        'baymodel', sa.sql.column('coe', String(255, mysql_ndb_type=TINYTEXT)))

    op.execute(baymodel.update().values(
        {'coe': op.inline_literal("kubernetes")}))
예제 #4
0
class Quota(Base):
    """Represents Quota for a resource within a project"""
    __tablename__ = 'quotas'
    __table_args__ = (schema.UniqueConstraint(
        "project_id", "resource",
        name='uniq_quotas0project_id0resource'), table_args())
    id = Column(Integer, primary_key=True)
    project_id = Column(String(255))
    resource = Column(String(255))
    hard_limit = Column(Integer())
예제 #5
0
def upgrade():
    op.add_column('cluster', sa.Column('fixed_network',
                  String(255, mysql_ndb_type=TINYTEXT),
                  nullable=True))
    op.add_column('cluster', sa.Column('fixed_subnet',
                  String(255, mysql_ndb_type=TINYTEXT),
                  nullable=True))
    op.add_column('cluster', sa.Column('floating_ip_enabled',
                  sa.Boolean(),
                  default=False))
예제 #6
0
def upgrade():
    op.add_column('baymodel', sa.Column('http_proxy',
                                        String(255, mysql_ndb_type=TINYTEXT),
                                        nullable=True))
    op.add_column('baymodel', sa.Column('https_proxy',
                                        String(255, mysql_ndb_type=TINYTEXT),
                                        nullable=True))
    op.add_column('baymodel', sa.Column('no_proxy',
                                        String(255, mysql_ndb_type=TINYTEXT),
                                        nullable=True))
예제 #7
0
def upgrade():
    op.add_column(
        'bay',
        sa.Column('coe_version',
                  String(255, mysql_ndb_type=TINYTEXT),
                  nullable=True))
    op.add_column(
        'bay',
        sa.Column('container_version',
                  String(255, mysql_ndb_type=TINYTEXT),
                  nullable=True))
예제 #8
0
def upgrade():
    op.add_column(
        'cluster',
        sa.Column('etcd_ca_cert_ref',
                  String(512, mysql_ndb_type=TEXT),
                  nullable=True))
    op.add_column(
        'cluster',
        sa.Column('front_proxy_ca_cert_ref',
                  String(512, mysql_ndb_type=TEXT),
                  nullable=True))
def upgrade():
    op.alter_column('bay',
                    'ca_cert_uuid',
                    new_column_name='ca_cert_ref',
                    existing_type=sa.String(length=36),
                    type_=String(512, mysql_ndb_type=TEXT),
                    nullable=True)
    op.alter_column('bay',
                    'magnum_cert_uuid',
                    new_column_name='magnum_cert_ref',
                    existing_type=sa.String(length=36),
                    type_=String(512, mysql_ndb_type=TEXT),
                    nullable=True)
예제 #10
0
class X509KeyPair(Base):
    """X509KeyPair"""
    __tablename__ = 'x509keypair'
    __table_args__ = (schema.UniqueConstraint('uuid',
                                              name='uniq_x509keypair0uuid'),
                      table_args())
    id = Column(Integer, primary_key=True)
    uuid = Column(String(36))
    certificate = Column(Text())
    private_key = Column(Text())
    private_key_passphrase = Column(Text())
    intermediates = Column(Text())
    project_id = Column(String(255))
    user_id = Column(String(255))
예제 #11
0
class DigitalService(Base):
    """Represents health status of various digital services"""
    __tablename__ = 'digital_service'
    __table_args__ = (schema.UniqueConstraint(
        "host", "binary",
        name="uniq_digital_service0host0binary"), table_args())

    id = Column(Integer, primary_key=True)
    host = Column(String(255))
    binary = Column(String(255))
    disabled = Column(Boolean, default=False)
    disabled_reason = Column(String(255))
    last_seen_up = Column(DateTime, nullable=True)
    forced_down = Column(Boolean, default=False)
    report_count = Column(Integer, nullable=False, default=0)
def upgrade():
    op.add_column('nodegroup', sa.Column('stack_id', String(255)))
    op.add_column('nodegroup', sa.Column('status', String(20)))
    op.add_column('nodegroup', sa.Column('status_reason', sa.Text()))
    op.add_column('nodegroup', sa.Column('version', String(20)))

    # Populate existing nodegroups with the cluster stack_id
    connection = op.get_bind()

    connection.execute(
        "UPDATE nodegroup "
        "INNER JOIN cluster ON nodegroup.cluster_id=cluster.uuid "
        "SET nodegroup.stack_id=cluster.stack_id, "
        "nodegroup.status=cluster.status, nodegroup.version=0 "
        "WHERE nodegroup.cluster_id=cluster.uuid")
예제 #13
0
class Federation(Base):
    """Represents a Federation."""
    __tablename__ = 'federation'
    __table_args__ = (schema.UniqueConstraint("uuid",
                                              name="uniq_federation0uuid"),
                      table_args())
    id = Column(Integer, primary_key=True)
    project_id = Column(String(255))
    uuid = Column(String(36))
    name = Column(String(255))
    hostcluster_id = Column(String(255))
    member_ids = Column(JSONEncodedList)
    status = Column(String(20))
    status_reason = Column(Text)
    properties = Column(JSONEncodedDict)
예제 #14
0
def upgrade():
    op.create_table(
        'flavors', sa.Column('id', sa.String(36)),
        sa.Column('name', sa.String(255)),
        sa.Column('description', sa.String(1024)),
        sa.Column('enabled',
                  sa.Boolean,
                  nullable=False,
                  server_default=sa.sql.true()),
        sa.Column('service_type', sa.String(36), nullable=True),
        sa.PrimaryKeyConstraint('id'))

    op.create_table(
        'serviceprofiles', sa.Column('id', sa.String(36)),
        sa.Column('description', sa.String(1024)),
        sa.Column('driver', sa.String(1024), nullable=False),
        sa.Column('enabled',
                  sa.Boolean,
                  nullable=False,
                  server_default=sa.sql.true()),
        sa.Column('metainfo', String(4096, mysql_ndb_type=TEXT)),
        sa.PrimaryKeyConstraint('id'))

    op.create_table(
        'flavorserviceprofilebindings',
        sa.Column('service_profile_id', sa.String(36), nullable=False),
        sa.Column('flavor_id', sa.String(36), nullable=False),
        sa.ForeignKeyConstraint(['service_profile_id'],
                                ['serviceprofiles.id']),
        sa.ForeignKeyConstraint(['flavor_id'], ['flavors.id']),
        sa.PrimaryKeyConstraint('service_profile_id', 'flavor_id'))
예제 #15
0
 def test_non_ndb_string_to_text(self):
     test_engine = self.test_engine
     self.assertEqual(
         "VARCHAR(255)",
         str(
             String(255, mysql_ndb_type=TINYTEXT).compile(
                 dialect=test_engine.dialect)))
예제 #16
0
 def test_ndb_string_length(self):
     test_engine = self.test_engine
     self.assertEqual(
         'VARCHAR(64)',
         str(
             String(
                 255,
                 mysql_ndb_length=64).compile(dialect=test_engine.dialect)))
예제 #17
0
 def test_ndb_string_to_text(self):
     test_engine = self.test_engine
     self.assertEqual(
         "TEXT",
         str(
             String(
                 4096,
                 mysql_ndb_type=TEXT).compile(dialect=test_engine.dialect)))
예제 #18
0
 def test_non_ndb_autostringsize(self):
     test_engine = self.test_engine
     self.assertEqual(
         'VARCHAR(255)',
         str(
             String(
                 255,
                 mysql_ndb_length=64).compile(dialect=test_engine.dialect)))
예제 #19
0
 def test_non_ndb_autostringtext(self):
     test_engine = self.test_engine
     self.assertEqual(
         "VARCHAR(4096)",
         str(
             String(
                 4096,
                 mysql_ndb_type=TEXT).compile(dialect=test_engine.dialect)))
def upgrade():
    op.create_table(
        'nodegroup',
        sa.Column('created_at', sa.DateTime(), nullable=True),
        sa.Column('updated_at', sa.DateTime(), nullable=True),
        sa.Column('id', sa.Integer(), nullable=False),
        sa.Column('uuid', String(length=36), nullable=False),
        sa.Column('name', String(length=255), nullable=False),
        sa.Column('cluster_id', String(length=255), nullable=False),
        sa.Column('project_id', String(length=255), nullable=False),
        sa.Column('docker_volume_size', sa.Integer(), nullable=True),
        sa.Column('labels', models.JSONEncodedDict, nullable=True),
        sa.Column('flavor_id', String(length=255), nullable=True),
        sa.Column('image_id', String(length=255), nullable=True),
        sa.Column('node_addresses', models.JSONEncodedList(), nullable=True),
        sa.Column('node_count', sa.Integer(), nullable=True),
        sa.Column('max_node_count', sa.Integer(), nullable=True),
        sa.Column('min_node_count', sa.Integer(), nullable=True),
        sa.Column('role', String(length=255), nullable=True),
        sa.Column('is_default',
                  sa.Boolean(create_constraint=False),
                  default=False),
        sa.PrimaryKeyConstraint('id'),
        sa.UniqueConstraint('uuid', name='uniq_nodegroup0uuid'),
        sa.UniqueConstraint('cluster_id',
                            'name',
                            name='uniq_nodegroup0cluster_id0name'),
    )
예제 #21
0
def upgrade():
    op.alter_column('bay',
                    'registry_trust_id',
                    new_column_name='trust_id',
                    existing_type=sa.String(255))
    op.add_column(
        'bay',
        sa.Column('trustee_username',
                  String(255, mysql_ndb_type=TINYTEXT),
                  nullable=True))
    op.add_column(
        'bay',
        sa.Column('trustee_user_id', sa.String(length=255), nullable=True))
    op.add_column(
        'bay',
        sa.Column('trustee_password',
                  String(255, mysql_ndb_type=TINYTEXT),
                  nullable=True))
예제 #22
0
파일: flavor.py 프로젝트: brk3/neutron
class ServiceProfile(model_base.BASEV2, model_base.HasId):
    description = sa.Column(sa.String(db_const.LONG_DESCRIPTION_FIELD_SIZE))
    driver = sa.Column(sa.String(1024), nullable=False)
    enabled = sa.Column(sa.Boolean,
                        nullable=False,
                        default=True,
                        server_default=sa.sql.true())
    metainfo = sa.Column(String(4096, mysql_ndb_type=TEXT))
    flavors = orm.relationship("FlavorServiceProfileBinding")
예제 #23
0
def upgrade():
    op.create_table(
        'dvr_host_macs',
        sa.Column('host', sa.String(length=255), nullable=False),
        sa.Column('mac_address',
                  sa.String(length=32),
                  nullable=False,
                  unique=True), sa.PrimaryKeyConstraint('host'))
    op.create_table(
        'ml2_dvr_port_bindings',
        sa.Column('port_id', sa.String(length=36), nullable=False),
        sa.Column('host', sa.String(length=255), nullable=False),
        sa.Column('router_id', sa.String(length=36), nullable=True),
        sa.Column('vif_type', sa.String(length=64), nullable=False),
        sa.Column('vif_details',
                  String(4095, mysql_ndb_type=TEXT),
                  nullable=False,
                  server_default=''),
        sa.Column('vnic_type',
                  sa.String(length=64),
                  nullable=False,
                  server_default='normal'),
        sa.Column('profile',
                  String(4095, mysql_ndb_type=TEXT),
                  nullable=False,
                  server_default=''),
        sa.Column(u'status', sa.String(16), nullable=False),
        sa.ForeignKeyConstraint(['port_id'], ['ports.id'], ondelete='CASCADE'),
        sa.PrimaryKeyConstraint('port_id', 'host'))
    op.create_table(
        'csnat_l3_agent_bindings',
        sa.Column('router_id', sa.String(length=36), nullable=False),
        sa.Column('l3_agent_id', sa.String(length=36), nullable=False),
        sa.Column('host_id', sa.String(length=255), nullable=True),
        sa.Column('csnat_gw_port_id', sa.String(length=36), nullable=True),
        sa.ForeignKeyConstraint(['l3_agent_id'], ['agents.id'],
                                ondelete='CASCADE'),
        sa.ForeignKeyConstraint(['router_id'], ['routers.id'],
                                ondelete='CASCADE'),
        sa.ForeignKeyConstraint(['csnat_gw_port_id'], ['ports.id'],
                                ondelete='CASCADE'),
        sa.PrimaryKeyConstraint('router_id', 'l3_agent_id'))
예제 #24
0
class Agent(model_base.BASEV2, model_base.HasId):
    """Represents agents running in neutron deployments."""

    __table_args__ = (
        sa.UniqueConstraint('agent_type', 'host',
                            name='uniq_agents0agent_type0host'),
        model_base.BASEV2.__table_args__
    )

    # L3 agent, DHCP agent, OVS agent, LinuxBridge
    agent_type = sa.Column(String(255, mysql_ndb_length=128), nullable=False)
    binary = sa.Column(String(255, mysql_ndb_type=TINYTEXT), nullable=False)
    # TOPIC is a fanout exchange topic
    topic = sa.Column(String(255, mysql_ndb_type=TINYTEXT), nullable=False)
    # TOPIC.host is a target topic
    host = sa.Column(sa.String(255), nullable=False)
    availability_zone = sa.Column(sa.String(255))
    admin_state_up = sa.Column(sa.Boolean, default=True,
                               server_default=sql.true(), nullable=False)
    # the time when first report came from agents
    created_at = sa.Column(sa.DateTime, nullable=False)
    # the time when first report came after agents start
    started_at = sa.Column(sa.DateTime, nullable=False)
    # updated when agents report
    heartbeat_timestamp = sa.Column(sa.DateTime, nullable=False)
    # description is note for admin user
    description = sa.Column(sa.String(db_const.DESCRIPTION_FIELD_SIZE))
    # configurations: a json dict string, I think 4095 is enough
    configurations = sa.Column(String(4095, mysql_ndb_type=TEXT),
                               nullable=False)
    # resource_versions: json dict, 8191 allows for ~256 resource versions
    #                    assuming ~32byte length "'name': 'ver',"
    #                    the whole row limit is 65535 bytes in mysql
    resource_versions = sa.Column(sa.String(8191))
    # load - number of resources hosted by the agent
    load = sa.Column(sa.Integer, server_default='0', nullable=False)

    @property
    def is_active(self):
        return not utils.is_agent_down(self.heartbeat_timestamp)
예제 #25
0
def AutoStringSize(length, ndb_size, **kw):
    return String(length, mysql_ndb_length=ndb_size, **kw)
예제 #26
0
from sqlalchemy import MetaData
from sqlalchemy import Table
from sqlalchemy import Text

from sqlalchemy import create_engine
from sqlalchemy import schema

from sqlalchemy.dialects.mysql import TEXT
from sqlalchemy.dialects.mysql import TINYTEXT

LOG = logging.getLogger(__name__)

_MOCK_CONNECTION = 'mysql+pymysql://'
_TEST_TABLE = Table("test_ndb", MetaData(),
                    Column('id', Integer, primary_key=True),
                    Column('test1', String(255, mysql_ndb_type=TEXT)),
                    Column('test2', String(4096, mysql_ndb_type=TEXT)),
                    Column('test3', String(255, mysql_ndb_length=64)),
                    mysql_engine='InnoDB')


class NDBMockTestBase(test_base.BaseTestCase):
    def setUp(self):
        super(NDBMockTestBase, self).setUp()
        mock_dbapi = mock.Mock()
        self.test_engine = test_engine = create_engine(
            _MOCK_CONNECTION, module=mock_dbapi)
        test_engine.dialect._oslodb_enable_ndb_support = True

        self.addCleanup(
            setattr, test_engine.dialect, "_oslodb_enable_ndb_support", False
예제 #27
0
def upgrade():
    op.add_column('baymodel', sa.Column('fixed_subnet',
                                        String(255, mysql_ndb_type=TINYTEXT),
                                        nullable=True))
예제 #28
0
def upgrade():
    op.add_column(
        'baymodel',
        sa.Column('cluster_distro',
                  String(255, mysql_ndb_type=TINYTEXT),
                  nullable=True))
예제 #29
0
class ClusterTemplate(Base):
    """Represents a ClusterTemplate."""

    __tablename__ = 'cluster_template'
    __table_args__ = (schema.UniqueConstraint('uuid',
                                              name='uniq_baymodel0uuid'),
                      table_args())
    id = Column(Integer, primary_key=True)
    uuid = Column(String(36))
    project_id = Column(String(255))
    user_id = Column(String(255))
    name = Column(String(255))
    image_id = Column(String(255))
    flavor_id = Column(String(255))
    master_flavor_id = Column(String(255))
    keypair_id = Column(String(255))
    external_network_id = Column(String(255))
    fixed_network = Column(String(255, mysql_ndb_type=TINYTEXT))
    fixed_subnet = Column(String(255, mysql_ndb_type=TINYTEXT))
    network_driver = Column(String(255, mysql_ndb_type=TINYTEXT))
    volume_driver = Column(String(255, mysql_ndb_type=TINYTEXT))
    dns_nameserver = Column(String(255, mysql_ndb_type=TINYTEXT))
    apiserver_port = Column(Integer())
    docker_volume_size = Column(Integer())
    docker_storage_driver = Column(String(255))
    cluster_distro = Column(String(255, mysql_ndb_type=TINYTEXT))
    coe = Column(String(255, mysql_ndb_type=TINYTEXT))
    http_proxy = Column(String(255, mysql_ndb_type=TINYTEXT))
    https_proxy = Column(String(255, mysql_ndb_type=TINYTEXT))
    no_proxy = Column(String(255, mysql_ndb_type=TINYTEXT))
    registry_enabled = Column(Boolean, default=False)
    labels = Column(JSONEncodedDict)
    tls_disabled = Column(Boolean, default=False)
    public = Column(Boolean, default=False)
    server_type = Column(String(255))
    insecure_registry = Column(String(255, mysql_ndb_type=TINYTEXT))
    master_lb_enabled = Column(Boolean, default=False)
    floating_ip_enabled = Column(Boolean, default=True)
    hidden = Column(Boolean, default=False)
예제 #30
0
class Cluster(Base):
    """Represents a Cluster."""

    __tablename__ = 'cluster'
    __table_args__ = (schema.UniqueConstraint('uuid', name='uniq_bay0uuid'),
                      table_args())
    id = Column(Integer, primary_key=True)
    project_id = Column(String(255))
    user_id = Column(String(255))
    uuid = Column(String(36))
    name = Column(String(255))
    cluster_template_id = Column(String(255))
    keypair = Column(String(255))
    docker_volume_size = Column(Integer())
    labels = Column(JSONEncodedDict)
    master_flavor_id = Column(String(255))
    flavor_id = Column(String(255))
    stack_id = Column(String(255))
    api_address = Column(String(255))
    node_addresses = Column(JSONEncodedList)
    node_count = Column(Integer())
    master_count = Column(Integer())
    status = Column(String(20))
    status_reason = Column(Text)
    health_status = Column(String(20))
    health_status_reason = Column(JSONEncodedDict)
    create_timeout = Column(Integer())
    discovery_url = Column(String(255, mysql_ndb_type=TINYTEXT))
    master_addresses = Column(JSONEncodedList)
    # TODO(wanghua): encrypt trust_id in db
    trust_id = Column(String(255))
    trustee_username = Column(String(255, mysql_ndb_type=TINYTEXT))
    trustee_user_id = Column(String(255))
    # TODO(wanghua): encrypt trustee_password in db
    trustee_password = Column(String(255, mysql_ndb_type=TINYTEXT))
    coe_version = Column(String(255, mysql_ndb_type=TINYTEXT))
    container_version = Column(String(255, mysql_ndb_type=TINYTEXT))
    # (yuanying) if we use barbican,
    # cert_ref size is determined by below format
    # * http(s)://${DOMAIN_NAME}/v1/containers/${UUID}
    # as a result, cert_ref length is estimated to 312 chars.
    # but we can use another backend to store certs.
    # so, we use 512 chars to get some buffer.
    ca_cert_ref = Column(String(512, mysql_ndb_type=mysql_TEXT))
    magnum_cert_ref = Column(String(512, mysql_ndb_type=mysql_TEXT))