Пример #1
0
class Agent(models.Model):
    id = models.UUIDField(
        primary_key=True,
        help_text="ID of agent",
        default=make_uuid,
        editable=True,
    )
    name = models.CharField(
        help_text="Agent name, can be generated automatically.",
        max_length=64,
        default=random_name("agent"),
    )
    urls = models.URLField(help_text="Agent URL", null=True, blank=True)
    organization = models.ForeignKey(
        "Organization",
        null=True,
        on_delete=models.CASCADE,
        help_text="Organization of agent",
        related_name="agent",
    )
    status = models.CharField(
        help_text="Status of agent",
        choices=HostStatus.to_choices(True),
        max_length=10,
        default=HostStatus.Active.name.lower(),
    )
    type = models.CharField(
        help_text="Type of agent",
        choices=HostType.to_choices(True),
        max_length=32,
        default=HostType.Docker.name.lower(),
    )
    config_file = models.FileField(
        help_text="Config file for agent",
        max_length=256,
        blank=True,
        upload_to=get_agent_config_file_path,
    )
    created_at = models.DateTimeField(help_text="Create time of agent",
                                      auto_now_add=True)

    # free_port = models.IntegerField(
    #     help_text="Agent free port.",
    #     default=30000,
    # )
    free_ports = ArrayField(models.IntegerField(blank=True),
                            help_text="Agent free ports.",
                            null=True)

    def delete(self, using=None, keep_parents=False):
        if self.config_file:
            if os.path.isfile(self.config_file.path):
                os.remove(self.config_file.path)
                shutil.rmtree(os.path.dirname(self.config_file.path),
                              ignore_errors=True)

        super(Agent, self).delete(using, keep_parents)

    class Meta:
        ordering = ("-created_at", )
Пример #2
0
 def save(
     self,
     force_insert=False,
     force_update=False,
     using=None,
     update_fields=None,
 ):
     if self.name == "":
         self.name = random_name(self.type)
     super(Node, self).save(force_insert, force_update, using,
                            update_fields)
Пример #3
0
 def save(
     self,
     force_insert=False,
     force_update=False,
     using=None,
     update_fields=None,
 ):
     if self.name == "":
         self.name = random_name(self.type)
     super(Node, self).save(
         force_insert, force_update, using, update_fields
     )
Пример #4
0
class Network(models.Model):
    id = models.UUIDField(
        primary_key=True,
        help_text="ID of network",
        default=make_uuid,
        editable=True,
    )
    name = models.CharField(
        help_text="network name, can be generated automatically.",
        max_length=64,
        default=random_name("netowrk"),
    )
    type = models.CharField(
        help_text="Type of network, %s" % NetworkType.values(),
        max_length=64,
        default=NetworkType.Fabric.value,
    )
    version = models.CharField(
        help_text="""
    Version of network.
    Fabric supported versions: %s
    """ % (FabricVersions.values()),
        max_length=64,
        default="",
    )
    created_at = models.DateTimeField(help_text="Create time of network",
                                      auto_now_add=True)
    consensus = models.CharField(
        help_text="Consensus of network",
        max_length=128,
        default="raft",
    )
    organizations = ArrayField(models.CharField(max_length=128, blank=True),
                               help_text="organizations of network",
                               default=list,
                               null=True)
    genesisblock = models.TextField(
        help_text="genesis block",
        null=True,
    )
    database = models.CharField(
        help_text="database of network",
        max_length=128,
        default="leveldb",
    )

    class Meta:
        ordering = ("-created_at", )
Пример #5
0
class Agent(models.Model):
    id = models.UUIDField(
        primary_key=True,
        help_text="ID of agent",
        default=make_uuid,
        editable=True,
    )
    name = models.CharField(
        help_text="Agent name, can be generated automatically.",
        max_length=64,
        default=random_name("agent"),
    )
    worker_api = models.CharField(
        help_text="Worker api of agent", max_length=128, default=""
    )
    govern = models.ForeignKey(
        Govern,
        help_text="Govern of agent",
        null=True,
        on_delete=models.CASCADE,
    )
    organization = models.ForeignKey(
        "Organization",
        null=True,
        on_delete=models.CASCADE,
        help_text="Organization of agent",
    )
    status = models.CharField(
        help_text="Status of agent",
        choices=HostStatus.to_choices(True),
        max_length=10,
        default=HostStatus.Active.name.lower(),
    )
    log_level = models.CharField(
        help_text="Log level of agent",
        choices=LogLevel.to_choices(True),
        max_length=10,
        default=LogLevel.Info.name.lower(),
    )
    type = models.CharField(
        help_text="Type of agent",
        choices=HostType.to_choices(True),
        max_length=32,
        default=HostType.Docker.name.lower(),
    )
    schedulable = models.BooleanField(
        help_text="Whether agent can be scheduled", default=True
    )
    capacity = models.IntegerField(
        help_text="Capacity of agent",
        default=1,
        validators=[MinValueValidator(1), MaxValueValidator(MAX_CAPACITY)],
    )
    node_capacity = models.IntegerField(
        help_text="Capacity of node",
        default=6,
        validators=[
            MinValueValidator(1),
            MaxValueValidator(MAX_NODE_CAPACITY),
        ],
    )
    created_at = models.DateTimeField(
        help_text="Create time of agent", auto_now_add=True
    )

    class Meta:
        ordering = ("-created_at",)
Пример #6
0
class Agent(models.Model):
    id = models.UUIDField(
        primary_key=True,
        help_text="ID of agent",
        default=make_uuid,
        editable=True,
    )
    name = models.CharField(
        help_text="Agent name, can be generated automatically.",
        max_length=64,
        default=random_name("agent"),
    )
    image = models.CharField(help_text="Image name for deploy agent",
                             max_length=64,
                             default="")
    ip = models.GenericIPAddressField(help_text="Agent IP Address")
    govern = models.ForeignKey(
        Govern,
        help_text="Govern of agent",
        null=True,
        on_delete=models.CASCADE,
    )
    organization = models.ForeignKey(
        "Organization",
        null=True,
        on_delete=models.CASCADE,
        help_text="Organization of agent",
    )
    status = models.CharField(
        help_text="Status of agent",
        choices=HostStatus.to_choices(True),
        max_length=10,
        default=HostStatus.Active.name.lower(),
    )
    log_level = models.CharField(
        help_text="Log level of agent",
        choices=LogLevel.to_choices(True),
        max_length=10,
        default=LogLevel.Info.name.lower(),
    )
    type = models.CharField(
        help_text="Type of agent",
        choices=HostType.to_choices(True),
        max_length=32,
        default=HostType.Docker.name.lower(),
    )
    schedulable = models.BooleanField(
        help_text="Whether agent can be scheduled", default=True)
    capacity = models.IntegerField(
        help_text="Capacity of agent",
        default=1,
        validators=[MinValueValidator(1),
                    MaxValueValidator(MAX_CAPACITY)],
    )
    node_capacity = models.IntegerField(
        help_text="Capacity of node",
        default=6,
        validators=[
            MinValueValidator(1),
            MaxValueValidator(MAX_NODE_CAPACITY),
        ],
    )
    config_file = models.FileField(
        help_text="Config file for agent",
        max_length=256,
        blank=True,
        upload_to=get_agent_config_file_path,
    )
    created_at = models.DateTimeField(help_text="Create time of agent",
                                      auto_now_add=True)

    def delete(self, using=None, keep_parents=False):
        if self.config_file:
            if os.path.isfile(self.config_file.path):
                os.remove(self.config_file.path)
                shutil.rmtree(os.path.dirname(self.config_file.path),
                              ignore_errors=True)

        super(Agent, self).delete(using, keep_parents)

    class Meta:
        ordering = ("-created_at", )