mirror of https://github.com/openspug/spug
				
				
				
			
		
			
				
	
	
		
			39 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
| # Copyright: (c) OpenSpug Organization. https://github.com/openspug/spug
 | |
| # Copyright: (c) <spug.dev@gmail.com>
 | |
| # Released under the AGPL-3.0 License.
 | |
| from django.db import models
 | |
| from libs import ModelMixin, human_datetime
 | |
| from apps.account.models import User
 | |
| from apps.setting.utils import AppSetting
 | |
| from libs.ssh import SSH
 | |
| 
 | |
| 
 | |
| class Host(models.Model, ModelMixin):
 | |
|     name = models.CharField(max_length=50)
 | |
|     zone = models.CharField(max_length=50)
 | |
|     hostname = models.CharField(max_length=50)
 | |
|     port = models.IntegerField()
 | |
|     username = models.CharField(max_length=50)
 | |
|     pkey = models.TextField(null=True)
 | |
|     desc = models.CharField(max_length=255, null=True)
 | |
| 
 | |
|     created_at = models.CharField(max_length=20, default=human_datetime)
 | |
|     created_by = models.ForeignKey(User, models.PROTECT, related_name='+')
 | |
|     deleted_at = models.CharField(max_length=20, null=True)
 | |
|     deleted_by = models.ForeignKey(User, models.PROTECT, related_name='+', null=True)
 | |
| 
 | |
|     @property
 | |
|     def private_key(self):
 | |
|         return self.pkey or AppSetting.get('private_key')
 | |
| 
 | |
|     def get_ssh(self, pkey=None):
 | |
|         pkey = pkey or self.private_key
 | |
|         return SSH(self.hostname, self.port, self.username, pkey)
 | |
| 
 | |
|     def __repr__(self):
 | |
|         return '<Host %r>' % self.name
 | |
| 
 | |
|     class Meta:
 | |
|         db_table = 'hosts'
 | |
|         ordering = ('-id',)
 |