def handle(self, *args, **options): msg = "QRBA API version: " + str(settings.QUMULO_API_VERSION) print(msg) (conninfo, creds) = qlogin(settings.QUMULO_devcluster['ipaddr'], 'admin', settings.QUMULO_devcluster['adminpassword'], settings.QUMULO_devcluster['port']) if not conninfo: msg = "could not connect to cluster " + str(self.name) logger.critical(msg) sys.exit(-1) qr = qumulo.rest.version.version(conninfo, None) msg = "cluster API version: " + str(qr) qr = Cluster.objects.filter(name=settings.QUMULO_devcluster['name']) if qr.count() == 0: cluster = Cluster( name=settings.QUMULO_devcluster['name'], ipaddr=settings.QUMULO_devcluster['ipaddr'], adminpassword=settings.QUMULO_devcluster['adminpassword'], port=settings.QUMULO_devcluster['port']) cluster.save() else: cluster = qr[0] msg = cluster.remove_all_cluster_items() print(msg)
def handle(self, *args, **options): qr = Cluster.objects.filter(name=settings.QUMULO_prodcluster['name']) if qr.count() == 0: cluster = Cluster(name=settings.QUMULO_prodcluster['name'], ipaddr=settings.QUMULO_prodcluster['ipaddr'], adminpassword=settings.QUMULO_prodcluster['adminpassword'], port=8000) cluster.save() else: cluster = qr[0] cluster. in
def handle(self, *args, **options): creator_msg = "load_host_activity_test_data" (conninfo, creds) = qlogin(settings.QUMULO_devcluster['ipaddr'], 'admin', settings.QUMULO_devcluster['adminpassword'], 8000) if not conninfo: msg = "could not connect to dev cluster ... exiting" logger.critical(msg) sys.exit(-1) qr = Cluster.objects.filter(name=settings.QUMULO_devcluster['name']) if qr.count() == 0: cluster = Cluster( name=settings.QUMULO_devcluster['name'], ipaddr=settings.QUMULO_devcluster['ipaddr'], adminpassword=settings.QUMULO_devcluster['adminpassword'], port=8000) cluster.save() else: cluster = qr[0] data = '' filename = options['filename'] for line in fileinput.input(filename): data = data + line data = json.loads(data) sample = request.RestResponse(data, 'etag') dt = datetime.datetime.utcnow() dt = dt.replace(tzinfo=pytz.UTC) cluster.load_activity_sample(conninfo=conninfo, creds=creds, sample=sample, validtime=dt)
def handle(self, *args, **options): creator_msg = "load_host_activity_test_data" (conninfo, creds) = qlogin(settings.QUMULO_devcluster['ipaddr'], 'admin', settings.QUMULO_devcluster['adminpassword'], 8000) if not conninfo: msg = "could not connect to dev cluster ... exiting" logger.critical(msg) sys.exit(-1) qr = Cluster.objects.filter(name=settings.QUMULO_devcluster['name']) if qr.count() == 0: cluster = Cluster( name=settings.QUMULO_devcluster['name'], ipaddr=settings.QUMULO_devcluster['ipaddr'], adminpassword=settings.QUMULO_devcluster['adminpassword'], port=8000) cluster.save() else: cluster = qr[0] filename = options['filename'] numdays = options['days_in_dataset'] for d in range(int(numdays), 0, -1): data = '' for line in fileinput.input(filename): if "rate" in str(line): # "rate": 1, val = str(line).split(':') val = val[1].replace(",", "") val = float(val) * random.random() line = '"rate": ' + str(val) + "," data = data + line data = json.loads(data) sample = request.RestResponse(data, 'etag') dt = datetime.datetime.utcnow() dt = dt.replace(tzinfo=pytz.UTC) dt = dt - datetime.timedelta(days=d) cluster.load_activity_sample(conninfo=conninfo, creds=creds, sample=sample, validtime=dt)
def handle(self, *args, **options): msg = "QRBA API version: " + str(settings.QUMULO_API_VERSION) print(msg) (conninfo, creds) = qlogin(settings.QUMULO_devcluster['ipaddr'], 'admin', settings.QUMULO_devcluster['adminpassword'], settings.QUMULO_devcluster['port']) if not conninfo: msg = "could not connect to cluster " + str(self.name) logger.critical(msg) sys.exit(-1) qr = qumulo.rest.version.version(conninfo, None) msg = "cluster API version: " + str(qr) qr = Cluster.objects.filter(name=settings.QUMULO_devcluster['name']) if qr.count() == 0: cluster = Cluster(name=settings.QUMULO_devcluster['name'], ipaddr=settings.QUMULO_devcluster['ipaddr'], adminpassword=settings.QUMULO_devcluster['adminpassword'], port=8000) cluster.save() else: cluster = qr[0] # load all activitytype objects for key, val in ACTIVITY_CHOICES: qs = ActivityType.objects.filter(activitytype=val, id=key) if qs.count() == 0: at = ActivityType(activitytype=val) at.save() for key, val in DAYS_IN_DATASET: qs = DaysInDataset.objects.filter(label=val, days=key) if qs.count() == 0: dds = DaysInDataset(label=val, days=key) dds.save() for key, val in CLUSTER_TIME_SERIES_CHOICES: qs = ClusterTimeSeriesType.objects.filter(activitytype=val, id=key) if qs.count() == 0: ctst = ClusterTimeSeriesType(activitytype=val) ctst.save() # Insure the placeholder Organization, IPzone, Host, Quota, and Restriction exist (needed for 'individual_hosts' to work # Leading '#' is used to force these objects to top of the sort order qr = Host.objects.filter(name=settings.NONE_NAME) if qr.count() < 1: qr = Organization.objects.filter(name=settings.NONE_NAME) if qr.count() < 1: now = datetime.datetime.utcnow() norg = Organization(name=settings.NONE_NAME) norg.save() msg = str(now) + ":Organization:" + str(settings.NONE_NAME) + ":initialize_system" logger.info(msg) else: norg = qr[0] zname = 'immutable' + settings.NONE_NAME nipz = IPzone(name=zname, organization=norg, ipaddrs=settings.LOCALHOST, creator="initialize_system") nipz.save() nipz.set_ipzone_marker() nipz.set_immutable(True) now = datetime.datetime.utcnow() msg = str(now) + ":IPzone:" + str(nipz.name) + ":initialize_system" logger.info(msg) lh = Host(name=settings.NONE_NAME, ipaddr='0.0.0.0', ipzone_id=nipz.id, organization=norg) lh.save() nquota = Quota(name=settings.NONE_NAME, qid=0, creator="initialize_system") nquota.save() now = datetime.datetime.utcnow() msg = str(now) + ":Quota:" + str(nquota.name) + ":initialize_system" logger.info(msg) lhr = Restriction(name='localhost', readonly=True, usermapping='None', usermapid=0, do_not_delete=True, creator="initialize_system") lhr.save() now = datetime.datetime.utcnow() msg = str(now) + ":Restriction:" + str(lhr.name) + ":initialize_system" logger.info(msg) lhr.set_organization(norg) lhr.ipzone = nipz lhr.individual_hosts.add(lh) lhr.save() dnsdomains = DNSdomain.objects.all() if dnsdomains.count() == 0: domains = ["d1.org.tld", "d2.org.tld", "org.private"] for domain in domains: dnsd = DNSdomain(name=domain) dnsd.save() dnsd.get_dcs_from_msdcs() dnsd.save() if cluster.alive() is False: print(" could not connect to cluster " + str(cluster) + " exiting!! ") sys.exit(-1) else: dcs = dnsd.get_windcs() for dc in dcs: wdc = WinDC.objects.filter(name=dc) if wdc.count() == 0: wc = WinDC(name=dc, dnsdomain=dnsd) wc.save() print(" cluster is " + str(cluster)) # insure that a 'None' Quota exists -- it will be used when no quota is desired qr = Quota.objects.filter(name=settings.NONE_NAME) if qr.count() == 0: norg = Organization.objects.filter(name='#None') if norg.count() == 0: norg = Organization(name='#None') norg.save() else: norg = norg[0] nonequota = Quota(name=settings.NONE_NAME, size=0, creator="initialize_system") nonequota.save() nonequota.set_organization(norg) organizations = Organization.objects.get_queryset() # print("organizations: " + str(organizations)) now = timezone.now() + datetime.timedelta(days=30) # print("now: " + str(now)) for org in organizations: print("calling " + str(org) + ".check_hosts() at " + str(now)) state = org.check_hosts() print(str(org) + ".check_hosts() returned " + str(state)) print("calling " + str(org) + ".check_ipzones() at " + str(now)) state = org.check_ipzones() print(str(org) + ".check_ipzones() returned " + str(state)) dcs = WinDC.objects.all() # dcs = [WinDC.objects.first()] print(" dcs are: " + str(dcs)) now = timezone.now() + datetime.timedelta(days=30) print(" now: " + str(now)) domainnames = [] for dc in dcs: if str(dc.dnsdomain) in str(domainnames): print(str(dc.name) + " already processed") continue else: domainnames.append(str(dc.dnsdomain)) state = dc.load_neworgs(cluster) orgs = dc.get_orgs() print(" " + str(dc) + ".load_neworgs( " + str(cluster) + " ) at " + str(now) + " returned " + str( state) + " and get_orgs found " + str(len(orgs)) + " orgs") if state is True: state = dc.load_newipzones() if state is True: ipzones = dc.get_ipzones() print(" " + str(dc) + ".load_newipzones() at " + str(now) + " returned " + str( state) + " and found " + str(len(ipzones)) + " ipzones ") hosts = [] if state is True: dc.load_newhosts() hosts = dc.get_hosts() print(" " + str(dc) + ".load_newhosts() at " + str(now) + " found " + str( len(hosts)) + " hosts") if len(hosts) > 0: break
def handle(self, *args, **options): now = datetime.datetime.utcnow() print("starting check_prod_vs_int_mounts now: " + str(now)) intcluster = Cluster.objects.filter( name=settings.QUMULO_intcluster['name']) if intcluster.count() == 0: intcluster = Cluster( name=settings.QUMULO_intcluster['name'], ipaddr=settings.QUMULO_intcluster['ipaddr'], adminpassword=settings.QUMULO_intcluster['adminpassword'], port=8000) intcluster.save() else: intcluster = intcluster[0] prodcluster = Cluster.objects.filter( name=settings.QUMULO_prodcluster['name']) if prodcluster.count() == 0: prodcluster = Cluster( name=settings.QUMULO_prodcluster['name'], ipaddr=settings.QUMULO_prodcluster['ipaddr'], adminpassword=settings.QUMULO_prodcluster['adminpassword'], port=8000) prodcluster.save() else: prodcluster = prodcluster[0] intbymount = {} prodbymount = {} cmd = "/usr/bin/showmount -e " + str(intcluster.ipaddr) # print(cmd) result = commands.getstatusoutput(cmd) if result[0] == 0: results = result[1].split("\n") for line in results: if 'Exports list' in str(line): continue thisline = line.split() tmp = set() for i in range(1, len(thisline)): tmp.add(thisline[i]) intbymount[thisline[0]] = tmp else: print("error fetching data for cluster " + str(intcluster)) intmounts = intbymount.keys() # for m in intmounts: # print(str(m) + ": " + str(intbymount[m])) cmd = "/usr/bin/showmount -e " + str(prodcluster.ipaddr) # print(cmd) result = commands.getstatusoutput(cmd) if result[0] == 0: results = result[1].split("\n") for line in results: if 'Exports list' in str(line): continue thisline = line.split() tmp = set() for i in range(1, len(thisline)): tmp.add(thisline[i]) prodbymount[thisline[0]] = tmp else: print("error fetching data for cluster " + str(prodcluster)) prodmounts = prodbymount.keys() # for m in prodmounts: # print(str(m) + ": " + str(prodbymount[m])) intmounts.sort() prodmounts.sort() if intmounts != prodmounts: print("intmounts not equal prodmounts!") sys.exit(-1) nummounts = len(prodmounts) print("found " + str(nummounts)) + " mountpoints" i = 1 for m in prodmounts: prodset = prodbymount[m] intset = intbymount[m] difference = prodset.difference(intset) if len(difference) > 0: print(str(i) + " -- found difference for " + str(m)) print(" prodset: " + str(prodset)) print(" intset: " + str(intset)) else: print(str(i) + " -- " + str(m) + " is OK") i = i + int(1)