Example #1
0
class User(DalUser):
    """The basic model class is User. It contains all the methods
    necessary to find and save users in memcache and in mongo.
    It transforms the user dict into an object with consistent
    attributes instead of inconsistent dict with missing keys.

    """

    email = StrField()
    mist_api_token = StrField()
    clouds = make_field(Clouds)()
    keypairs = make_field(Keypairs)()

    def __repr__(self):
        return super(User, self).__repr__(['email'])
Example #2
0
class Backend(OODict):
    """A cloud vm provider backend"""

    enabled = BoolField()
    machine_count = IntField()
    apiurl = StrField()
    apikey = HtmlSafeStrField()
    apisecret = StrField()
    title = HtmlSafeStrField()
    tenant_name = HtmlSafeStrField()
    auth_version = HtmlSafeStrField()
    region = HtmlSafeStrField()
    poll_interval = IntField(10000)
    provider = HtmlSafeStrField()
    ## datacenter = StrField()
    compute_endpoint = StrField()
    docker_port = IntField(4243)
    machines = make_field(Machines)()
    starred = ListField()
    unstarred = ListField()

    def __repr__(self):
        print_fields = ['title', 'provider', 'region']
        return super(Backend, self).__repr__(print_fields)

    def get_id(self):
        from mist.io.helpers import b58_encode
        if self.provider == 'docker':
            concat = '%s%s%s' % (self.provider, self.title, self.apiurl)
        elif self.provider == 'bare_metal':
            name = self.machines.values()[0].name
            concat = '%s%s%s' % (self.provider, '', name)
        else:
            concat = '%s%s%s' % (self.provider, self.region, self.apikey)
        return b58_encode(int(sha1(concat).hexdigest(), 16))
Example #3
0
class Machines(FieldsDict):
    """Collection of machines of a certain cloud.

    For the time being, only bare metal machines are saved, for API clouds
    we get the machine list from the provider.

    """

    _item_type = make_field(Machine)
    _key_error = exceptions.MachineNotFoundError
Example #4
0
class Cloud(OODict):
    """A cloud vm provider cloud"""

    enabled = BoolField()
    machine_count = IntField()
    apiurl = StrField()
    apikey = HtmlSafeStrField()
    apisecret = StrField()
    title = HtmlSafeStrField()
    tenant_name = HtmlSafeStrField()
    auth_version = HtmlSafeStrField()
    region = HtmlSafeStrField()
    poll_interval = IntField(10000)
    provider = HtmlSafeStrField()
    ## datacenter = StrField()
    compute_endpoint = StrField()
    key_file = StrField()
    cert_file = StrField()
    ca_cert_file = StrField()
    ssh_port = IntField(22)
    docker_port = IntField(4243)
    machines = make_field(Machines)()
    starred = ListField()
    unstarred = ListField()
    images_location = StrField()

    def __repr__(self):
        print_fields = ['title', 'provider', 'region']
        return super(Cloud, self).__repr__(print_fields)

    def get_id(self):
        from mist.io.helpers import b58_encode
        if self.provider == 'docker':
            concat = '%s%s%s' % (self.provider, self.title, self.apiurl)
        elif self.provider in ['bare_metal', 'coreos']:
            name = self.machines.values()[0].name
            concat = '%s%s%s' % (self.provider, '', name)
        elif self.provider == 'openstack' or 'hpcloud' in self.provider:
            concat = "%s%s%s%s%s" % (self.provider, self.region, self.apikey,
                                     self.apiurl, self.tenant_name)
        elif self.provider == 'libvirt':
            concat = "%s%s" % (self.provider, self.apiurl)
        elif self.provider in ['vcloud', 'indonesian_vcloud', 'vsphere']:
            concat = "%s%s%s%s" % (self.provider, self.apikey, self.apisecret,
                                   self.apiurl)
        else:
            concat = '%s%s%s' % (self.provider, self.region, self.apikey)
        return b58_encode(int(sha1(concat).hexdigest(), 16))
Example #5
0
class Keypairs(FieldsDict):

    _item_type = make_field(Keypair)
    _key_error = exceptions.KeypairNotFoundError
Example #6
0
class Clouds(FieldsDict):

    _item_type = make_field(Cloud)
    _key_error = exceptions.CloudNotFoundError
Example #7
0
class Backends(FieldsDict):

    _item_type = make_field(Backend)
    _key_error = exceptions.BackendNotFoundError