def get_data(self, **kwargs): query_id=str(uuid.uuid4()) data_list=[] from cinderclient import client conn=client.Client(2, self.__username, self.__password, self.__project, self.__auth_url) volumes = conn.volumes.list(search_opts={'all_tenants':1}, limit=self.__number_per_page) while len(volumes)>0: log.debug("Got %d volumes, first id %s" % (len(volumes), volumes[0].id)) data=init_message() data['query_id']=query_id data['volumes']=[] for volume in volumes: data['volumes'].append(volume._info) data_list.append(data) last_id=volumes[-1].id log.debug("last_id %s" %last_id) volumes = conn.volumes.list(search_opts={'all_tenants':1}, marker=last_id, limit=self.__number_per_page) volume_snapshots = conn.volume_snapshots.list(search_opts={'all_tenants':1}) log.debug("Got %d volume_snapshots" % len(volume_snapshots)) data=init_message() data['query_id']=query_id data['volume_snapshots']=[] for volume in volume_snapshots: data['volume_snapshots'].append(volume._info) data_list.append(data) return data_list
def get_data(self, **kwargs): data=init_message() copy_attributes=['OS-EXT-STS:task_state', 'addresses', 'OS-EXT-STS:vm_state', 'OS-EXT-SRV-ATTR:instance_name', 'OS-SRV-USG:launched_at', 'id', 'security_groups', 'user_id', 'OS-DCF:diskConfig', 'accessIPv4', 'accessIPv6', 'progress', 'OS-EXT-STS:power_state', 'OS-EXT-AZ:availability_zone', 'config_drive', 'status', 'updated', 'hostId', 'OS-EXT-SRV-ATTR:host', 'OS-SRV-USG:terminated_at', 'key_name', 'OS-EXT-SRV-ATTR:hypervisor_hostname', 'name', 'created', 'tenant_id', 'os-extended-volumes:volumes_attached', 'fault', 'metadata'] data['tenants']=[] data['users']=[] from keystoneclient.v2_0 import client keystone=client.Client(username=self.__username, password=self.__password, tenant_name=self.__project, auth_url=self.__auth_url) users=keystone.users.list() for user in users: data['users'].append(user._info) tenants=keystone.tenants.list() for tenant in tenants: tenant_info = tenant._info if tenant_info['description'] and 'personal tenancy' not in tenant_info['description'].lower(): membership_retrieved = False membership_attempt = 0 while not membership_retrieved and membership_attempt < 3: try: tenant_info['users'] = [{'id' : user.id, 'username' : user.username} for user in tenant.list_users()] membership_retrieved = True except: time.sleep(2 ** membership_attempt) membership_attempt += 1 data['tenants'].append(tenant_info) return data
def get_data(self, **kwargs): inodes = set() users = {} groups = {} data = init_message() data["fs"] = {"name": self.__path} fs_raw = str(os.statvfs(self.__path)) for kv in [ field.split("=") for field in fs_raw[fs_raw.index("(") + 1:-1].split(", ") ]: data["fs"][kv[0][2:]] = int(kv[1]) data["usage"] = {} for root, dirs, files in os.walk(self.__path): for name in files: filename = join(root, name) metadata = os.lstat(filename) if stat.S_ISREG(metadata.st_mode): if metadata.st_nlink == 1 or metadata.st_ino not in inodes: if metadata.st_uid not in users: try: users[metadata.st_uid] = pwd.getpwuid( metadata.st_uid).pw_name except: users[metadata.st_uid] = metadata.st_uid if metadata.st_gid not in groups: try: groups[metadata.st_gid] = grp.getgrgid( metadata.st_gid).gr_name except: groups[metadata.st_gid] = metadata.st_gid user = users[metadata.st_uid] group = groups[metadata.st_gid] key = str(user) + "/" + str(group) if key not in data["usage"]: data["usage"][key] = { "files": 0, "blocks": 0, "bytes": 0 } data["usage"][key]["files"] += 1 data["usage"][key]["bytes"] += metadata.st_size data["usage"][key]["blocks"] += metadata.st_blocks if metadata.st_nlink > 1: inodes.add(metadata.st_ino) return data
def get_data(self, **kwargs): query_id=str(uuid.uuid4()) data_list=[] from keystoneclient.v2_0 import client from swift.common.ring import Ring keystone=client.Client(username=self.__username, password=self.__password, tenant_name=self.__project, auth_url=self.__auth_url) self.__ring = Ring(self.__ring_location) tenants = [tenant.id for tenant in keystone.tenants.list()] random.shuffle(tenants) data=init_message() data["swift"] = {} for tenant, stats in zip(tenants, ThreadPool().map(self.fetch, tenants)): if stats is not None: data["swift"][tenant] = stats return data
def get_data(self, **kwargs): data = init_message() username = base64.b64encode(self.__username) password = hashlib.md5(self.__password).hexdigest() headers = { "Authorization": "HCP %s:%s" % (username, password), "Accept": "application/json" } url = "https://" + self.__host + "/mapi/tenants" # get tenants try: req = urllib2.Request(url, None, headers) handler = urllib2.urlopen(req) except urllib2.HTTPError as e: log.error('response code %d' % e.code) raise RemoteServerError() except urllib2.URLError as e: raise Exception("Error accessing URL %s: %s" % (url, e.args)) else: # 200 content = handler.read() tenants = json.loads(content)['name'] handler.close() for tenant in tenants: start_time = datetime.datetime.fromtimestamp( time.time() - 60 * self.__query_period).strftime("%Y-%m-%dT%H:%M:00%%2B0930") url_tenant = "https://" + self.__host + "/mapi/tenants/" + tenant + "/chargebackReport?start=" + start_time log.debug("querying %s from %s..." % (tenant, start_time)) try: req = urllib2.Request(url_tenant, None, headers) handler = urllib2.urlopen(req) except urllib2.HTTPError as e: log.debug('response code %d' % e.code) continue except urllib2.URLError as e: raise Exception("Error accessing URL %s: %s" % (url, e.args)) else: # 200 content = handler.read() report = json.loads(content) data[tenant] = report['chargebackData'] handler.close() return data
def get_data(self, **kwargs): inodes = set() users = {} groups = {} data = init_message() data["fs"] = { "name" : self.__path } fs_raw = str(os.statvfs(self.__path)) for kv in [field.split("=") for field in fs_raw[fs_raw.index("(")+1:-1].split(", ")]: data["fs"][kv[0][2:]] = int(kv[1]) data["usage"] = {} for root, dirs, files in os.walk(self.__path): for name in files: filename = join(root, name) metadata = os.lstat(filename) if stat.S_ISREG(metadata.st_mode): if metadata.st_nlink == 1 or metadata.st_ino not in inodes: if metadata.st_uid not in users: try: users[metadata.st_uid] = pwd.getpwuid(metadata.st_uid).pw_name except: users[metadata.st_uid] = metadata.st_uid if metadata.st_gid not in groups: try: groups[metadata.st_gid] = grp.getgrgid(metadata.st_gid).gr_name except: groups[metadata.st_gid] = metadata.st_gid user = users[metadata.st_uid] group = groups[metadata.st_gid] key = str(user) + "/" + str(group) if key not in data["usage"]: data["usage"][key] = { "files" : 0, "blocks" : 0, "bytes" : 0 } data["usage"][key]["files"] += 1 data["usage"][key]["bytes"] += metadata.st_size data["usage"][key]["blocks"] += metadata.st_blocks if metadata.st_nlink > 1: inodes.add(metadata.st_ino) return data
def get_data(self, **kwargs): data=init_message() username = base64.b64encode(self.__username) password = hashlib.md5(self.__password).hexdigest() headers = { "Authorization" : "HCP %s:%s" % (username, password) , "Accept": "application/json"} url="https://"+self.__host+"/mapi/tenants" # get tenants try: req = urllib2.Request(url, None, headers) handler = urllib2.urlopen(req) except urllib2.HTTPError as e: log.error('response code %d' % e.code) raise RemoteServerError() except urllib2.URLError as e: raise Exception("Error accessing URL %s: %s" % (url, e.args)) else: # 200 content = handler.read() tenants = json.loads(content)['name'] handler.close() for tenant in tenants: start_time=datetime.datetime.fromtimestamp(time.time()-60*self.__query_period).strftime("%Y-%m-%dT%H:%M:00%%2B0930") url_tenant="https://"+self.__host+"/mapi/tenants/"+tenant+"/chargebackReport?start="+start_time log.debug("querying %s from %s..."% (tenant, start_time)) try: req = urllib2.Request(url_tenant, None, headers) handler = urllib2.urlopen(req) except urllib2.HTTPError as e: log.debug('response code %d' % e.code) continue except urllib2.URLError as e: raise Exception("Error accessing URL %s: %s" % (url, e.args)) else: # 200 content = handler.read() report = json.loads(content) data[tenant]=report['chargebackData'] handler.close() return data
def get_data(self, **kwargs): query_id=str(uuid.uuid4()) data_list=[] from novaclient import client conn=client.Client(2, self.__username, self.__password, self.__project, self.__auth_url) servers = conn.servers.list(search_opts={'all_tenants':1}, limit=self.__number_per_page) flavors=[f._info for f in conn.flavors.list(is_public=None)] while len(servers)>0: log.debug("Got %d instances, first id %s" % (len(servers), servers[0].id)) data=init_message() data['query_id']=query_id data['flavors']=flavors data['instances']=[] for server in servers: data['instances'].append(server._info) data_list.append(data) last_id=servers[-1].id log.debug("last_id %s" %last_id) servers = conn.servers.list(search_opts={'all_tenants':1}, marker=last_id, limit=self.__number_per_page) return data_list
def get_data(self, **kwargs): """Package VRB report vms from an XLS file""" data = init_message() data['instances'] = self._read_data(self._path) return data