Exemplo n.º 1
0
    def __init__(self, username):

        self.username = username
        phantom_info_objects = PhantomInfoDB.objects.all()
        if not phantom_info_objects:
            raise PhantomWebException('The service is mis-configured.  Please contact your sysadmin')
        rabbit_info_objects = RabbitInfoDB.objects.all()
        if not rabbit_info_objects:
            raise PhantomWebException('The service is mis-configured.  Please contact your sysadmin')

        self.phantom_info = phantom_info_objects[0]
        self.rabbit_info = rabbit_info_objects[0]
        g_general_log.debug("Using dburl %s" % (self.phantom_info.dburl))
        self._authz = PhantomSQL(self.phantom_info.dburl)
        self._user_dbobject = self._authz.get_user_object_by_display_name(username)
        if not self._user_dbobject:
            raise PhantomWebException('The user %s is not associated with cloud user database.  Please contact your sysadmin' % (username))
        self.access_key = self._user_dbobject.access_key

        ssl = self.rabbit_info.rabbitssl
        self._dashi_conn = DashiCeiConnection(self.rabbit_info.rabbithost, self.rabbit_info.rabbituser, self.rabbit_info.rabbitpassword, exchange=self.rabbit_info.rabbitexchange, timeout=60, port=self.rabbit_info.rabbitport, ssl=ssl)
        self.epum = EPUMClient(self._dashi_conn)
        self.dtrs = DTRSClient(self._dashi_conn)

        self._load_clouds()
Exemplo n.º 2
0
class UserObjectMySQL(UserObject):

    def __init__(self, username):

        self.username = username
        phantom_info_objects = PhantomInfoDB.objects.all()
        if not phantom_info_objects:
            raise PhantomWebException('The service is mis-configured.  Please contact your sysadmin')
        rabbit_info_objects = RabbitInfoDB.objects.all()
        if not rabbit_info_objects:
            raise PhantomWebException('The service is mis-configured.  Please contact your sysadmin')

        self.phantom_info = phantom_info_objects[0]
        self.rabbit_info = rabbit_info_objects[0]
        g_general_log.debug("Using dburl %s" % (self.phantom_info.dburl))
        self._authz = PhantomSQL(self.phantom_info.dburl)
        self._user_dbobject = self._authz.get_user_object_by_display_name(username)
        if not self._user_dbobject:
            raise PhantomWebException('The user %s is not associated with cloud user database.  Please contact your sysadmin' % (username))
        self.access_key = self._user_dbobject.access_key

        ssl = self.rabbit_info.rabbitssl
        self._dashi_conn = DashiCeiConnection(self.rabbit_info.rabbithost, self.rabbit_info.rabbituser, self.rabbit_info.rabbitpassword, exchange=self.rabbit_info.rabbitexchange, timeout=60, port=self.rabbit_info.rabbitport, ssl=ssl)
        self.epum = EPUMClient(self._dashi_conn)
        self.dtrs = DTRSClient(self._dashi_conn)

        self._load_clouds()


    def close(self):
        self._authz.close()

    def has_phantom_data(self):
        return True

    def describe_domain(self, username, domain):
        # TODO: this should eventually be part of the REST API
        describe = self.epum.describe_domain(domain, caller=username)
        g_general_log.info("describe_domain: %s" % describe)
        return describe

    def get_all_groups(self):
        domain_names = self.epum.list_domains(caller=self.access_key)
        domains = []
        for domain in domain_names:
            domain_description = self.epum.describe_domain(domain, caller=self.access_key)
            domains.append(domain_description)
        return domains

    def get_all_lcs(self):
        dt_names = self.dtrs.list_dts(self.access_key)
        dts = []
        for dt_name in dt_names:
            dt = self.dtrs.describe_dt(self.access_key, dt_name)
            dts.append(dt)
        return dts

    def load_clouds(self):
        self._load_clouds()

    def _load_clouds(self):
        dtrs_client = DTRSClient(self._dashi_conn)
        sites = dtrs_client.list_credentials(self._user_dbobject.access_key)
        self.iaasclouds = {}
        for site_name in sites:
            try:
                site_desc = dtrs_client.describe_site(site_name)
                desc = dtrs_client.describe_credentials(self._user_dbobject.access_key, site_name)
                uci = UserCloudInfo(site_name, self._user_dbobject.displayname, desc['access_key'], desc['secret_key'], desc['key_name'], site_desc['driver_class'], site_desc=site_desc)
                self.iaasclouds[site_name] = uci
            except Exception, ex:
                g_general_log.error("Failed trying to add the site %s to the user %s | %s" % (site_name, self._user_dbobject.displayname, str(ex)))