def forwards(self):
     db.add_column(
         "sa_managedobjectselector", "filter_service_group",
         DocumentReferenceField("inv.ResourceGroup", null=True, blank=True))
     db.add_column(
         "sa_managedobjectselector", "filter_client_group",
         DocumentReferenceField("inv.ResourceGroup", null=True, blank=True))
 def forwards(self):
     db.add_column(
         "sa_managedobjectprofile", "prefix_profile_interface",
         DocumentReferenceField("ip.PrefixProfile", null=True, blank=True))
     db.add_column(
         "sa_managedobjectprofile", "prefix_profile_neighbor",
         DocumentReferenceField("ip.PrefixProfile", null=True, blank=True))
示例#3
0
 def migrate(self):
     self.db.add_column(
         "sa_managedobjectprofile",
         "enable_box_discovery_address_management",
         models.BooleanField(default=False),
     )
     self.db.add_column(
         "sa_managedobjectprofile",
         "enable_box_discovery_address_dhcp",
         models.BooleanField(default=False),
     )
     self.db.add_column(
         "sa_managedobjectprofile",
         "address_profile_interface",
         DocumentReferenceField("ip.AddressProfile", null=True, blank=True),
     )
     self.db.add_column(
         "sa_managedobjectprofile",
         "address_profile_management",
         DocumentReferenceField("ip.AddressProfile", null=True, blank=True),
     )
     self.db.add_column(
         "sa_managedobjectprofile",
         "address_profile_neighbor",
         DocumentReferenceField("ip.AddressProfile", null=True, blank=True),
     )
     self.db.add_column(
         "sa_managedobjectprofile",
         "address_profile_dhcp",
         DocumentReferenceField("ip.AddressProfile", null=True, blank=True),
     )
 def migrate(self):
     # Get profile record mappings
     pcoll = self.mongo_db["noc.profiles"]
     pmap = {}  # name -> id
     for d in pcoll.find({}, {"_id": 1, "name": 1}):
         pmap[d["name"]] = str(d["_id"])
     # UPDATE profiles
     s_profiles = list(
         self.db.execute(
             "SELECT DISTINCT filter_profile FROM sa_managedobjectselector")
     )
     for (p, ) in s_profiles:
         if not p:
             continue
         elif p not in pmap:
             # If migrations on 0150_managed_object_profile
             continue
         self.db.execute(
             """
         UPDATE sa_managedobjectselector
         SET filter_profile = %s
         WHERE filter_profile = %s
         """,
             [pmap[p], p],
         )
     # Alter .filter_profile column
     self.db.execute("""
         ALTER TABLE sa_managedobjectselector
         ALTER filter_profile TYPE CHAR(24) USING SUBSTRING(\"filter_profile\", 1, 24)
         """)
     # Create .filter_vendor field
     self.db.add_column(
         "sa_managedobjectselector",
         "filter_vendor",
         DocumentReferenceField("inv.Vendor", null=True, blank=True),
     )
     # Create .filter_platform field
     self.db.add_column(
         "sa_managedobjectselector",
         "filter_platform",
         DocumentReferenceField("inv.Vendor", null=True, blank=True),
     )
     # Create .filter_version field
     self.db.add_column(
         "sa_managedobjectselector",
         "filter_version",
         DocumentReferenceField("inv.Firmware", null=True, blank=True),
     )
     # Create .filter_tt_system field
     self.db.add_column(
         "sa_managedobjectselector",
         "filter_tt_system",
         DocumentReferenceField("inv.Firmware", null=True, blank=True),
     )
示例#5
0
 def migrate(self):
     self.db.add_column(
         "sa_managedobjectselector",
         "filter_service_group",
         DocumentReferenceField("inv.ResourceGroup", null=True, blank=True),
     )
     self.db.add_column(
         "sa_managedobjectselector",
         "filter_client_group",
         DocumentReferenceField("inv.ResourceGroup", null=True, blank=True),
     )
示例#6
0
 def migrate(self):
     self.db.add_column(
         "sa_managedobjectprofile",
         "prefix_profile_interface",
         DocumentReferenceField("ip.PrefixProfile", null=True, blank=True),
     )
     self.db.add_column(
         "sa_managedobjectprofile",
         "prefix_profile_neighbor",
         DocumentReferenceField("ip.PrefixProfile", null=True, blank=True),
     )
 def forwards(self):
     db.execute("""
       ALTER TABLE sa_managedobjectprofile
       RENAME enable_box_discovery_vrf
       TO enable_box_discovery_vpn_interface""")
     db.add_column("sa_managedobjectprofile",
                   "enable_box_discovery_vpn_mpls",
                   models.BooleanField(default=False))
     db.add_column(
         "sa_managedobjectprofile", "vpn_profile_interface",
         DocumentReferenceField("vc.VPNProfile", null=True, blank=True))
     db.add_column(
         "sa_managedobjectprofile", "vpn_profile_mpls",
         DocumentReferenceField("vc.VPNProfile", null=True, blank=True))
示例#8
0
class Project(NOCModel):
    """
    Projects are used to track investment projects expenses and profits
    """
    class Meta(object):
        verbose_name = "Project"
        verbose_name_plural = "Projects"
        app_label = "project"
        db_table = "project_project"

    code = models.CharField("Code", max_length=256, unique=True)
    name = models.CharField("Name", max_length=256)
    description = models.TextField("Description", null=True, blank=True)
    shape_overlay_glyph = DocumentReferenceField(Glyph, null=True, blank=True)
    shape_overlay_position = models.CharField(
        "S.O. Position",
        max_length=2,
        choices=[(x.value, x.value) for x in ShapeOverlayPosition],
        null=True,
        blank=True,
    )
    shape_overlay_form = models.CharField(
        "S.O. Form",
        max_length=1,
        choices=[(x.value, x.value) for x in ShapeOverlayForm],
        null=True,
        blank=True,
    )
    # Integration with external NRI systems
    # Reference to remote system object has been imported from
    remote_system = DocumentReferenceField(RemoteSystem, null=True, blank=True)
    # Object id in remote system
    remote_id = models.CharField(max_length=64, null=True, blank=True)
    # Object id in BI
    bi_id = models.BigIntegerField(unique=True)

    _id_cache = cachetools.TTLCache(100, ttl=60)

    def __str__(self):
        return self.code

    @classmethod
    @cachetools.cachedmethod(operator.attrgetter("_id_cache"),
                             lock=lambda x: id_lock)
    def get_by_id(cls, id):
        p = Project.objects.filter(id=id)[:1]
        if p:
            return p[0]
        return None
示例#9
0
    def migrate(self):
        Template = self.db.mock_model(model_name="Template", db_table="main_template")

        self.db.add_column(
            "sa_managedobjectprofile",
            "beef_storage",
            DocumentReferenceField("main.ExtStorage", null=True, blank=True),
        )
        self.db.add_column(
            "sa_managedobjectprofile",
            "beef_path_template",
            models.ForeignKey(
                Template,
                verbose_name="Config Mirror Template",
                blank=True,
                null=True,
                on_delete=models.CASCADE,
            ),
        )
        self.db.add_column(
            "sa_managedobjectprofile",
            "beef_policy",
            models.CharField(
                "Beef Policy",
                max_length=1,
                choices=[("D", "Disable"), ("A", "Always"), ("C", "Change")],
                default="D",
            ),
        )
示例#10
0
 def forwards(self):
     # ManagedObject profile
     db.drop_column("sa_managedobjectprofile", "sync_ipam")
     db.drop_column("sa_managedobjectprofile", "fqdn_template")
     db.add_column(
         "sa_managedobjectprofile", "fqdn_suffix",
         models.CharField("FQDN suffix",
                          max_length=256,
                          null=True,
                          blank=True))
     db.add_column(
         "sa_managedobjectprofile", "address_resolution_policy",
         models.CharField("Address Resolution Policy",
                          choices=[("D", "Disabled"), ("O", "Once"),
                                   ("E", "Enabled")],
                          max_length=1,
                          null=False,
                          blank=False,
                          default="D"))
     db.add_column(
         "sa_managedobjectprofile", "resolver_handler",
         DocumentReferenceField("main.Handler", null=True, blank=True))
     # Managed Object
     db.add_column(
         "sa_managedobject", "fqdn",
         models.CharField("FQDN", max_length=256, null=True, blank=True))
     db.add_column(
         "sa_managedobject", "address_resolution_policy",
         models.CharField("Address Resolution Policy",
                          choices=[("P", "Profile"), ("D", "Disabled"),
                                   ("O", "Once"), ("E", "Enabled")],
                          max_length=1,
                          null=False,
                          blank=False,
                          default="P"))
示例#11
0
 def migrate(self):
     # Get profile record mappings
     pcoll = self.mongo_db["noc.profiles"]
     pmap = {}  # name -> id
     for d in pcoll.find({}, {"_id": 1, "name": 1}):
         pmap[d["name"]] = str(d["_id"])
     # Create .profile column
     self.db.add_column(
         "peer_peeringpoint",
         "profile",
         DocumentReferenceField("sa.Profile", null=True, blank=True),
     )
     # Update profiles
     for (p, ) in list(
             self.db.execute(
                 "SELECT DISTINCT profile_name FROM peer_peeringpoint")):
         self.db.execute(
             """
         UPDATE peer_peeringpoint
         SET profile = %s
         WHERE profile_name = %s
         """,
             [pmap[p], p],
         )
     # Set profile as not null
     self.db.execute(
         "ALTER TABLE peer_peeringpoint ALTER profile SET NOT NULL")
     # Drop legacy profile_name
     self.db.delete_column("peer_peeringpoint", "profile_name")
    def forwards(self):
        Template = db.mock_model(model_name='Template',
                                 db_table='main_template',
                                 db_tablespace='',
                                 pk_field_name='id',
                                 pk_field_type=models.AutoField)

        db.add_column(
            "sa_managedobjectprofile", "config_mirror_storage",
            DocumentReferenceField("main.ExtStorage", null=True, blank=True))
        db.add_column(
            "sa_managedobjectprofile", "config_mirror_template",
            models.ForeignKey(Template,
                              verbose_name="Config Mirror Template",
                              blank=True,
                              null=True))
        db.add_column(
            "sa_managedobjectprofile", "config_mirror_policy",
            models.CharField("Config Mirror Policy",
                             max_length=1,
                             choices=[("D", "Disable"), ("A", "Always"),
                                      ("C", "Change")],
                             default="C"))
        db.add_column(
            "sa_managedobjectprofile", "config_validation_policy",
            models.CharField("Config Validation Policy",
                             max_length=1,
                             choices=[("D", "Disable"), ("A", "Always"),
                                      ("C", "Change")],
                             default="C"))
示例#13
0
 def migrate(self):
     self.db.add_column(
         "sa_managedobjectprofile",
         "object_validation_policy",
         DocumentReferenceField("cm.ObjectValidationPolicy",
                                null=True,
                                blank=True),
     )
示例#14
0
 def migrate(self):
     self.db.add_column(
         "sa_administrativedomain",
         "default_pool",
         DocumentReferenceField("self", null=True, blank=True),
     )
     self.db.create_index("sa_administrativedomain", ["default_pool"],
                          unique=False)
示例#15
0
 def migrate(self):
     self.db.add_column(
         "sa_managedobjectselector",
         "filter_pool",
         DocumentReferenceField("self", null=True, blank=True),
     )
     self.db.create_index("sa_managedobjectselector", ["filter_pool"],
                          unique=False)
示例#16
0
 def migrate(self):
     mdb = self.mongo_db
     # Get default prefix profile
     coll = mdb["prefixprofiles"]
     d = coll.find_one({"name": "default"})
     default_prefix_profile = d["_id"]
     #
     coll = mdb["vpnprofiles"]
     default_id = bson.ObjectId()
     wf = bson.ObjectId("5a01d980b6f529000100d37a")
     profiles = [
         {
             "_id": default_id,
             "name": "default VRF",
             "type": "vrf",
             "description": "Default VRF profile",
             "workflow": wf,
             "default_prefix_profile": default_prefix_profile,
             "bi_id": bson.int64.Int64(bi_hash(default_id)),
         }
     ]
     # Convert styles
     style_profiles = {None: default_id}
     for (style_id,) in self.db.execute("SELECT DISTINCT style_id FROM ip_vrf"):
         if not style_id:
             continue
         p_id = bson.ObjectId()
         p = {
             "_id": p_id,
             "name": "VRF Style %s" % style_id,
             "type": "vrf",
             "description": "Auto-converted for VRF style %s" % style_id,
             "workflow": wf,
             "style": style_id,
             "default_prefix_profile": default_prefix_profile,
             "bi_id": bson.int64.Int64(bi_hash(p_id)),
         }
         style_profiles[style_id] = p_id
         profiles += [p]
     # Insert profiles to database
     coll.insert_many(profiles)
     # Create Prefix.profile field
     self.db.add_column(
         "ip_vrf", "profile", DocumentReferenceField("vc.VPNProfile", null=True, blank=True)
     )
     # Migrate profile styles
     for style_id in style_profiles:
         if style_id:
             cond = "style_id = %s" % style_id
         else:
             cond = "style_id IS NULL"
         self.db.execute(
             "UPDATE ip_vrf SET profile = %%s WHERE %s" % cond, [str(style_profiles[style_id])]
         )
     # Make Prefix.profile not nullable
     self.db.execute("ALTER TABLE ip_vrf ALTER profile SET NOT NULL")
     # Drop Prefix.style
     self.db.delete_column("ip_vrf", "style_id")
示例#17
0
 def forwards(self):
     db.add_column("sa_managedobject", "service",
         DocumentReferenceField(
             "self", null=True, blank=True
         )
     )
     db.create_index(
         "sa_managedobject",
         ["service"], unique=False, db_tablespace="")
 def migrate(self):
     self.db.add_column(
         "sa_managedobjectprofile",
         "enable_box_discovery_ifdesc",
         models.BooleanField(default=False),
     )
     self.db.add_column(
         "sa_managedobjectprofile",
         "ifdesc_patterns",
         DocumentReferenceField("inv.IfDescPatterns", null=True,
                                blank=True),
     )
     self.db.add_column(
         "sa_managedobjectprofile",
         "ifdesc_handler",
         DocumentReferenceField("main.Handler", null=True, blank=True),
     )
     self.db.add_column("sa_managedobjectprofile", "ifdesc_symmetric",
                        models.BooleanField(default=False))
示例#19
0
 def migrate(self):
     # Project
     self.db.add_column(
         "project_project",
         "remote_system",
         DocumentReferenceField("self", null=True, blank=True),
     )
     self.db.add_column(
         "project_project", "remote_id",
         models.CharField(max_length=64, null=True, blank=True))
     self.db.add_column("project_project", "bi_id",
                        models.BigIntegerField(null=True, blank=True))
示例#20
0
 def migrate(self):
     Template = self.db.mock_model(model_name="Template", db_table="main_template")
     self.db.add_column(
         "sa_administrativedomain",
         "bioseg_floating_name_template",
         models.ForeignKey(Template, null=True, blank=True, on_delete=models.CASCADE),
     )
     self.db.add_column(
         "sa_administrativedomain",
         "bioseg_floating_parent_segment",
         DocumentReferenceField("inv.NetworkSegment", null=True, blank=True),
     )
示例#21
0
 def migrate(self):
     coll = self.mongo_db["addressprofiles"]
     default_id = bson.ObjectId()
     wf = bson.ObjectId("5a01d980b6f529000100d37a")
     profiles = [
         {
             "_id": default_id,
             "name": "default",
             "description": "Default address profile",
             "workflow": wf,
             "bi_id": bson.int64.Int64(bi_hash(default_id)),
         }
     ]
     # Convert styles
     style_profiles = {}
     for (style_id,) in self.db.execute("SELECT DISTINCT style_id FROM ip_address"):
         if not style_id:
             style_profiles[None] = default_id
             continue
         p_id = bson.ObjectId()
         p = {
             "_id": p_id,
             "name": "Style %s" % style_id,
             "description": "Auto-converted for style %s" % style_id,
             "workflow": wf,
             "style": style_id,
             "bi_id": bson.int64.Int64(bi_hash(p_id)),
         }
         style_profiles[style_id] = p_id
         profiles += [p]
     # Insert profiles to database
     coll.insert_many(profiles)
     # Create Prefix.profile field
     self.db.add_column(
         "ip_address",
         "profile",
         DocumentReferenceField("ip.AddressProfile", null=True, blank=True),
     )
     # Migrate profile styles
     for style_id in style_profiles:
         if style_id:
             cond = "style_id = %s" % style_id
         else:
             cond = "style_id IS NULL"
         self.db.execute(
             "UPDATE ip_address SET profile = %%s WHERE %s" % cond,
             [str(style_profiles[style_id])],
         )
     # Make Prefix.profile not nullable
     self.db.execute("ALTER TABLE ip_address ALTER profile SET NOT NULL")
     # Drop Prefix.style
     self.db.delete_column("ip_address", "style_id")
示例#22
0
 def migrate(self):
     # ManagedObjectProfile
     self.db.add_column(
         "sa_managedobjectprofile",
         "shape_overlay_glyph",
         DocumentReferenceField("main.Glyph", null=True, blank=True),
     )
     self.db.add_column(
         "sa_managedobjectprofile",
         "shape_overlay_position",
         models.CharField("S.O. Position",
                          max_length=2,
                          null=True,
                          blank=True),
     )
     self.db.add_column(
         "sa_managedobjectprofile",
         "shape_overlay_form",
         models.CharField("S.O. Form", max_length=1, null=True, blank=True),
     )
     # ManagedObject
     self.db.add_column(
         "sa_managedobject",
         "shape_overlay_glyph",
         DocumentReferenceField("main.Glyph", null=True, blank=True),
     )
     self.db.add_column(
         "sa_managedobject",
         "shape_overlay_position",
         models.CharField("S.O. Position",
                          max_length=2,
                          null=True,
                          blank=True),
     )
     self.db.add_column(
         "sa_managedobject",
         "shape_overlay_form",
         models.CharField("S.O. Form", max_length=1, null=True, blank=True),
     )
示例#23
0
 def migrate(self):
     # Select profile names
     profiles = set(r[0] for r in self.db.execute(
         "SELECT DISTINCT profile_name FROM sa_managedobject"))
     # Create profile records
     pcoll = self.mongo_db["noc.profiles"]
     for p in profiles:
         u = uuid.uuid4()
         pcoll.update_many({"name": p}, {
             "$set": {
                 "name": p
             },
             "$setOnInsert": {
                 "uuid": u
             }
         },
                           upsert=True)
     # Get profile record mappings
     pmap = {}  # name -> id
     for d in pcoll.find({}, {"_id": 1, "name": 1}):
         pmap[d["name"]] = str(d["_id"])
     # Create .profile field
     self.db.add_column(
         "sa_managedobject",
         "profile",
         DocumentReferenceField("inv.Profile", null=True, blank=True),
     )
     # Migrate profile data
     for p in profiles:
         self.db.execute(
             """
             UPDATE sa_managedobject
             SET profile = %s
             WHERE profile_name = %s
         """,
             [pmap[p], p],
         )
         self.db.execute(
             """
             UPDATE sa_managedobjectselector
             SET filter_profile = %s
             WHERE filter_profile = %s
         """,
             [pmap[p], p],
         )
     # Set profile as not null
     self.db.execute(
         "ALTER TABLE sa_managedobject ALTER profile SET NOT NULL")
     # Drop legacy profile_name
     self.db.delete_column("sa_managedobject", "profile_name")
 def migrate(self):
     Template = self.db.mock_model(model_name="Template",
                                   db_table="main_template")
     self.db.add_column(
         "sa_managedobjectprofile",
         "config_download_storage",
         DocumentReferenceField("main.ExtStorage", null=True, blank=True),
     )
     self.db.add_column(
         "sa_managedobjectprofile",
         "config_download_template",
         models.ForeignKey(
             Template,
             verbose_name="Config download Template",
             blank=True,
             null=True,
             on_delete=models.CASCADE,
         ),
     )
     self.db.add_column(
         "sa_managedobjectprofile",
         "config_policy",
         models.CharField(
             "Config download Policy",
             max_length=1,
             choices=[
                 ("s", "Script"),
                 ("S", "Script, Download"),
                 ("D", "Download, Script"),
                 ("d", "Download"),
             ],
             default="s",
         ),
     )
     self.db.add_column(
         "sa_managedobject",
         "config_policy",
         models.CharField(
             "Config download Policy",
             max_length=1,
             choices=[
                 ("P", "Profile"),
                 ("s", "Script"),
                 ("S", "Script, Download"),
                 ("D", "Download, Script"),
                 ("d", "Download"),
             ],
             default="P",
         ),
     )
示例#25
0
 def forwards(self):
     # Administrative Domain
     db.add_column("sa_administrativedomain", "remote_system",
                   DocumentReferenceField("self", null=True, blank=True))
     db.add_column("sa_administrativedomain", "remote_id",
                   models.CharField(max_length=64, null=True, blank=True))
     db.add_column("sa_administrativedomain", "bi_id",
                   models.IntegerField(null=True, blank=True))
     # AuthProfile
     db.add_column("sa_authprofile", "remote_system",
                   DocumentReferenceField("self", null=True, blank=True))
     db.add_column("sa_authprofile", "remote_id",
                   models.CharField(max_length=64, null=True, blank=True))
     db.add_column("sa_authprofile", "bi_id",
                   models.IntegerField(null=True, blank=True))
     db.add_column("sa_authprofile", "tags",
                   TagsField("Tags", null=True, blank=True))
     # ManagedObject
     db.add_column("sa_managedobject", "remote_system",
                   DocumentReferenceField("self", null=True, blank=True))
     db.add_column("sa_managedobject", "remote_id",
                   models.CharField(max_length=64, null=True, blank=True))
     db.add_column("sa_managedobject", "bi_id",
                   models.IntegerField(null=True, blank=True))
     db.add_column(
         "sa_managedobject", "escalation_policy",
         models.CharField("Escalation Policy",
                          max_length=1,
                          choices=[("E", "Enable"), ("D", "Disable"),
                                   ("P", "From Profile")],
                          default="P"))
     db.add_column("sa_managedobject", "tt_system",
                   DocumentReferenceField("self", null=True, blank=True))
     db.add_column("sa_managedobject", "tt_system_id",
                   models.CharField(max_length=64, null=True, blank=True))
     # ManagedObjectProfile
     db.add_column("sa_managedobjectprofile", "remote_system",
                   DocumentReferenceField("self", null=True, blank=True))
     db.add_column("sa_managedobjectprofile", "remote_id",
                   models.CharField(max_length=64, null=True, blank=True))
     db.add_column("sa_managedobjectprofile", "bi_id",
                   models.IntegerField(null=True, blank=True))
     db.add_column(
         "sa_managedobjectprofile", "escalation_policy",
         models.CharField("Escalation Policy",
                          max_length=1,
                          choices=[("E", "Enable"), ("D", "Disable")],
                          default="E"))
     # TerminationGroup
     db.add_column("sa_terminationgroup", "remote_system",
                   DocumentReferenceField("self", null=True, blank=True))
     db.add_column("sa_terminationgroup", "remote_id",
                   models.CharField(max_length=64, null=True, blank=True))
     db.add_column("sa_terminationgroup", "bi_id",
                   models.IntegerField(null=True, blank=True))
示例#26
0
    def forwards(self):
        #
        # Vendor
        #

        # Select vendors
        vendors = set(r[0] for r in db.execute(
            "SELECT DISTINCT value FROM sa_managedobjectattribute WHERE key = 'vendor'"
        ))
        # Create vendors records
        pcoll = get_db()["noc.vendors"]
        for v in vendors:
            u = uuid.uuid4()
            vc = v.upper()
            pcoll.update({"code": vc}, {
                "$set": {
                    "code": vc
                },
                "$setOnInsert": {
                    "name": v,
                    "uuid": u
                }
            },
                         upsert=True)
        # Get vendor record mappings
        vmap = {}  # name -> id
        for d in pcoll.find({}, {"_id": 1, "code": 1}):
            vmap[d["code"]] = str(d["_id"])
        # Create .vendor field
        db.add_column(
            "sa_managedobject", "vendor",
            DocumentReferenceField("inv.Vendor", null=True, blank=True))
        # Migrate profile data
        for v in vendors:
            db.execute(
                """
                UPDATE sa_managedobject
                SET vendor = %s
                WHERE
                  id IN (
                    SELECT managed_object_id
                    FROM sa_managedobjectattribute
                    WHERE
                      key = 'vendor'
                      AND value = %s
                  )
            """, [vmap[v.upper()], v])
示例#27
0
 def migrate(self):
     # Create default profile
     P_ID = "5ae04bcb45ce8300f385edb2"
     pcoll = self.mongo_db["asprofiles"]
     pcoll.insert_one({
         "_id": bson.ObjectId(P_ID),
         "name": "default",
         "description": "Default Profile"
     })
     # Create AS.profile
     self.db.add_column(
         "peer_as", "profile",
         DocumentReferenceField("peer.ASProfile", null=True, blank=True))
     # Update profiles
     self.db.execute("UPDATE peer_as SET profile = %s", [P_ID])
     # Set profile not null
     self.db.execute("ALTER TABLE peer_as ALTER profile SET NOT NULL")
示例#28
0
 def forwards(self):
     coll = get_db()["prefixprofiles"]
     default_id = bson.ObjectId()
     wf = bson.ObjectId("5a01d980b6f529000100d37a")
     profiles = [{
         "_id": default_id,
         "name": "default",
         "description": "Default prefix profile",
         "workflow": wf,
         "bi_id": bson.int64.Int64(bi_hash(default_id))
     }]
     # Convert styles
     style_profiles = {}
     for style_id, in db.execute("SELECT DISTINCT style_id FROM ip_prefix"):
         if not style_id:
             style_profiles[None] = default_id
             continue
         p_id = bson.ObjectId()
         p = {
             "_id": p_id,
             "name": "Style %s" % style_id,
             "description": "Auto-converted for style %s" % style_id,
             "workflow": wf,
             "style": style_id,
             "bi_id": bson.int64.Int64(bi_hash(p_id))
         }
         style_profiles[style_id] = p_id
         profiles += [p]
     # Insert profiles to database
     coll.insert(profiles)
     # Create Prefix.profile field
     db.add_column(
         "ip_prefix", "profile",
         DocumentReferenceField("ip.PrefixProfile", null=True, blank=True))
     # Migrate profile styles
     for style_id in style_profiles:
         if style_id:
             cond = "style_id = %s" % style_id
         else:
             cond = "style_id IS NULL"
         db.execute("UPDATE ip_prefix SET profile = %%s WHERE %s" % cond,
                    [str(style_profiles[style_id])])
     # Make Prefix.profile not nullable
     db.execute("ALTER TABLE ip_prefix ALTER profile SET NOT NULL")
     # Drop Prefix.style
     db.drop_column("ip_prefix", "style_id")
示例#29
0
 def migrate(self):
     p_id = bson.ObjectId()
     self.mongo_db["capsprofiles"].insert_one({
         "_id": p_id,
         "name": "default",
         "description": "Default Caps Profile",
         "enable_snmp": True,
         "enable_snmp_v1": True,
         "enable_snmp_v2c": True,
         "enable_l2": True,
         "bfd_policy": "E",
         "cdp_policy": "E",
         "fdp_policy": "E",
         "huawei_ndp_policy": "E",
         "lacp_policy": "E",
         "lldp_policy": "E",
         "oam_policy": "E",
         "rep_policy": "E",
         "stp_policy": "E",
         "udld_policy": "E",
         "enable_l3": True,
         "hsrp_policy": "E",
         "vrrp_policy": "E",
         "vrrpv3_policy": "E",
         "bgp_policy": "E",
         "ospf_policy": "E",
         "ospfv3_policy": "E",
         "isis_policy": "E",
         "ldp_policy": "E",
         "rsvp_policy": "E",
     })
     # Create MOP.caps_profile field
     self.db.add_column(
         "sa_managedobjectprofile",
         "caps_profile",
         DocumentReferenceField("sa.CapsProfile", null=True, blank=True),
     )
     # Set default caps profile
     self.db.execute("UPDATE sa_managedobjectprofile SET caps_profile = %s",
                     [str(p_id)])
     # Make field required
     self.db.execute(
         "ALTER TABLE sa_managedobjectprofile ALTER caps_profile SET NOT NULL"
     )
示例#30
0
 def migrate(self):
     self.db.add_column(
         "project_project",
         "shape_overlay_glyph",
         DocumentReferenceField("main.Glyph", null=True, blank=True),
     )
     self.db.add_column(
         "project_project",
         "shape_overlay_position",
         models.CharField("S.O. Position",
                          max_length=2,
                          null=True,
                          blank=True),
     )
     self.db.add_column(
         "project_project",
         "shape_overlay_form",
         models.CharField("S.O. Form", max_length=1, null=True, blank=True),
     )