Beispiel #1
0
 def test_html_object_generate_full_html_no_body(self):
     html_obj = HTML(True)
     html_obj.generate_html()
     self.assertEqual("<!DOCTYPE html>\n <html>\n</html>",
                      html_obj.html_string)
Beispiel #2
0
 def test_html_object_has_body(self):
     html_obj = HTML()
     html_obj.change_has_body()
     self.assertEqual(True, html_obj.has_body)
Beispiel #3
0
 def test_html_object_generate_empty_html(self):
     html_obj = HTML()
     html_obj.generate_html()
     self.assertEqual("", html_obj.html_string)
Beispiel #4
0
 def test_html_object_set_nested_level(self):
     html_obj = HTML()
     test_element = html_element()
     html_obj.add_element(test_element)
     html_obj.set_element_nested_level(0, 1)
     self.assertEqual(1, html_obj.get_element(0).nested_level)
Beispiel #5
0
 def test_html_object_full_html(self):
     html_obj = HTML()
     html_obj.change_full_html()
     self.assertEqual(True, html_obj.is_full_html)
        <p>another test</p>
        <img src="/icon.png" data-image="responsive"/>
    </div>
</body>
</html>

"""

from HTML import HTML
from Tag import Tag
from TopLevelTag import TopLevelTag

if __name__ == "__main__":
    # If you want to add html code to the file (test.html) replace output=None with output="test.html"
    # Если Вы хотите добавить html код в файл (test.html) замените output=None на output="test.html"
    with HTML(output=None) as doc:
        with TopLevelTag("head") as head:
            with Tag("title") as title:
                title.text = "hello"
                head += title
                doc += head

                with TopLevelTag("body") as body:
                    with Tag("h1", klass=("main-text", )) as h1:
                        h1.text = "Test"
                        body += h1

                    with Tag("div",
                             klass=("container", "container-fluid"),
                             id="lead") as div:
                        with Tag("p") as paragraph:
Beispiel #7
0
 def test_html_object_get_nested_level_with_element_list(self):
     html_obj = HTML()
     test_element = html_element()
     html_obj.add_element(test_element)
     html_obj.set_element_nested_level(0, 1)
     self.assertEqual(1, html_obj.get_top_element_nested_level())
Beispiel #8
0
def createReports(sgObj, site, datacenter):
    www = HTML()
    mailObj = EMail()

    dates = DateString()
    tiers = ['DG1', 'DG2']
    alertLimits = {}
    alertLimits['DG1'] = 85
    alertLimits['DG2'] = 98
    page = []
    csvpage = []
    temppage = []
    today = dates.today
    yesterday = dates.yesterday
    tomorrow = dates.tomorrow
    pagedirs = ['download', 'history']
    subdirs = [today, tomorrow, yesterday]
    f = Files()
    for dir in pagedirs:
        f.dir = '/var/www/html/' + dir
        f.mkdir()
        for sub in subdirs:
            f.dir = '/var/www/html/' + dir + '/' + sub
            f.mkdir()
    csvfile = '/www/download/' + today + '/' + site + '_pools.csv'
    csvfileperm = '/www/download/' + site + '_pools.csv'
    csvlink = '<a href=/download/' + today + '/' + site + '_pools.csv>CSV</a>'
    yesterdaylink = '<a href=/history/' + yesterday + '/' + datacenter + site + '_EMC_Summary.html>' + yesterday + '</a>'
    tomorrowlink = '<a href=/history/' + tomorrow + '/' + datacenter + site + '_EMC_Summary.html>' + tomorrow + '</a>'
    htmlfile1 = '/www/history/' + today + '/' + datacenter + site + '_EMC_Summary.html'
    tempfile = '/www/history/' + tomorrow + '/' + datacenter + site + '_EMC_Summary.html'
    htmlfile2 = '/www/' + datacenter + site + '_EMC_Summary.html'

    reportDate = str(time.strftime("%c"))

    page.append(www.start_html('Thin Pool Report for ' + site))
    page.append(www.EMC_Header(site, datacenter, '', csvlink))

    page.append('<p><br><table align=center  border=3>\n')
    row = ['EMC Storage Summary Report', tomorrowlink, yesterdaylink]
    page.append(www.th_list(row))
    page.append(www.end_table)

    page.append(www.start_table(3, site))
    heading = [
        'Pool', 'Capacity', 'Used', 'Percent Used', 'Free', 'Technology',
        'Protection'
    ]
    page.append(www.th_list(heading))
    total_usable = 0
    total_provisioned = 0
    total_used = 0
    total_free = 0
    #csvpage.append('Thin Pool Report for ' + site + '\n\n')
    csvpage.append(', '.join(heading) + '\n')

    alertMessage = 'The following pools exceed set thresholds...\n\n'
    alerts = 0
    for tier in tiers:
        for pool in sgObj.pools.keys():
            comparepool = str(pool)
            comparepool = pool.upper()
            if tier in comparepool:
                ##########
                compression = sgObj.pooldetails[pool]['COMPRESSION']
                subscription_limit = sgObj.pooldetails[pool][
                    'SUBSCRIPTION_LIMIT']
                PRC = sgObj.pooldetails[pool]['PRC']
                tech = sgObj.pooldetails[pool]['TECH']
                protection = sgObj.pooldetails[pool]['LAYOUT']
                ##########
                usable = float(sgObj.pools[pool]['total_usable_tracks_gb'])
                used = float(sgObj.pools[pool]['total_used_tracks_gb'])
                percent_used = sgObj.pools[pool]['percent_full']
                free = float(sgObj.pools[pool]['total_free_tracks_gb'])
                usable = int(round(usable, 0))
                used = int(round(used, 0))
                free = int(round(free, 0))

                total_usable += usable
                total_used += used
                total_free += free
                html = www.tr
                if int(percent_used) >= alertLimits[tier]:
                    html = www.alerttr
                    alertMessage += "Thin pool " + comparepool + " is " + str(
                        percent_used) + "% used.\n"
                    alertMessage += str(free) + " GB free remain in the pool\n"
                    alertMessage += " The threshold for " + comparepool + ' is set to ' + str(
                        alertLimits[tier]) + '%\n\n'
                    alerts += 1
                row = [
                    pool,
                    str(usable),
                    str(used),
                    str(percent_used),
                    str(free), tech, protection
                ]
                csvpage.append(', '.join(row) + '\n')

                page.append(www.tr_list(row))

    total_pct_used = int(
        (int(total_used) / (float(total_usable) + .0001)) * 100)
    total_subscription = int(
        (int(total_provisioned) / (float(total_usable) + .0001)) * 100)
    row = [
        'Totals',
        str(total_usable),
        str(total_used),
        str(total_pct_used),
        str(total_free), '___', '___'
    ]

    page.append(www.tr_list(row))
    page.append(www.end_table)

    page.append(www.start_table(3, 'SRP Info'))
    heading = [
        'Name', 'Capacity', 'Used', 'Percent Used', 'Free', 'Provisioned',
        'Subscription'
    ]
    page.append(www.th_list(heading))
    csvpage.append("\n\n\n")
    csvpage.append(', '.join(heading) + '\n')

    usable = float(sgObj.SRP_Info['USABLE'])
    used = float(sgObj.SRP_Info['USED'])
    free = float(sgObj.SRP_Info['FREE'])
    subscribed = float(sgObj.SRP_Info['SUBSCRIBED'])

    usable = int(round(usable, 0))
    used = int(round(used, 0))
    free = int(round(free, 0))
    subscribed = int(round(subscribed, 0))

    pct_used = int((int(used) / (float(usable) + .0001)) * 100)
    subscription = int((int(subscribed) / (float(usable) + .0001)) * 100)
    row = [
        sgObj.SRP_NAME,
        str(usable),
        str(used),
        str(pct_used),
        str(free),
        str(subscribed),
        str(subscription)
    ]
    csvpage.append(', '.join(row) + '\n')
    page.append(www.tr_list(row))
    page.append(www.end_table)

    page.append(www.end_html)
    f.write_file(htmlfile2, page)
    f.write_file(htmlfile1, page)
    f.write_file(csvfile, csvpage)
    f.write_file(csvfileperm, csvpage)
    temppage.append(www.start_html())
    temppage.append(
        www.Not_Found_Header('Report not created yet for ' + tomorrow))
    temppage.append(www.end_html)
    f.write_file(tempfile, temppage)
    if alerts > 0:
        mailObj.subject = "Storage Capacity Alert, " + site + ', ' + datacenter
        mailObj.message = alertMessage
        mailObj.send_mail()
Beispiel #9
0
    def drawFull(self, month, year):
        # should be called only once when we draw the calendar for the first time
        #
        self.vp = VerticalPanel()
        self.vp.setSpacing(2)
        self.vp.addStyleName("calendarbox calendar-module calendar")
        self.setWidget(self.vp)
        self.setVisible(False)
        #
        mth = int(month)
        yr = int(year)

        tp = HorizontalPanel()
        tp.addStyleName("calendar-top-panel")
        tp.setSpacing(5)

        h1 = Hyperlink('<<')
        h1.addClickListener(getattr(self, 'onPreviousYear'))
        h2 = Hyperlink('<')
        h2.addClickListener(getattr(self, 'onPreviousMonth'))
        h4 = Hyperlink('>')
        h4.addClickListener(getattr(self, 'onNextMonth'))
        h5 = Hyperlink('>>')
        h5.addClickListener(getattr(self, 'onNextYear'))

        tp.add(h1)
        tp.add(h2)

        # titlePanel can be changed, whenever we draw, so keep the reference

        self.titlePanel = SimplePanel()
        self.titlePanel.setWidget(
            HTML("<b>" + self.getMonthsOfYear()[mth - 1] + " " + str(yr) +
                 "</b>"))
        self.titlePanel.setStyleName("calendar-center")

        tp.add(self.titlePanel)
        tp.add(h4)
        tp.add(h5)
        tvp = VerticalPanel()
        tvp.setSpacing(10)
        tvp.add(tp)

        self.vp.add(tvp)

        # done with top panel

        self.middlePanel = SimplePanel()
        grid = self.drawGrid(mth, yr)
        self.middlePanel.setWidget(grid)
        self.vp.add(self.middlePanel)
        self.defaultGrid = grid
        #
        # some links & handlers
        #
        bh1 = Hyperlink(self.yesterday)
        bh1.addClickListener(getattr(self, 'onYesterday'))
        bh2 = Hyperlink(self.today)
        bh2.addClickListener(getattr(self, 'onToday'))
        bh3 = Hyperlink(self.tomorrow)
        bh3.addClickListener(getattr(self, 'onTomorrow'))
        bh4 = Hyperlink(self.cancel)
        bh4.addClickListener(getattr(self, 'onCancel'))
        #
        # add code to test another way of doing the layout
        #
        b = HorizontalPanel()
        b.add(bh1)
        b.add(bh2)
        b.add(bh3)
        b.addStyleName("calendar-shortcuts")
        self.vp.add(b)
        b2 = SimplePanel()
        b2.add(bh4)
        b2.addStyleName("calendar-cancel")
        self.vp.add(b2)

        self.setVisible(True)
        return
Beispiel #10
0
def createReports(sgObj, site, datacenter):
    www = HTML()
    mailObj = EMail()
    swObj = BRCD()
    swObj.get_connection_map()
    dates = DateString()

    page = []
    csvpage = []
    temppage = []
    today = dates.today
    yesterday = dates.yesterday
    tomorrow = dates.tomorrow
    pagedirs = ['download', 'history']
    subdirs = [today, tomorrow, yesterday]
    f = Files()
    for dir in pagedirs:
        f.dir = '/var/www/html/' + dir
        f.mkdir()
        for sub in subdirs:
            f.dir = '/var/www/html/' + dir + '/' + sub
            f.mkdir()
    csvfile = '/www/download/' + today + '/' + site + '_FA.csv'
    csvlink = '<a href=/download/' + today + '/' + site + '_FA.csv>CSV</a>'
    htmlfile = '/www/' + site + '/FA_Ports.html'

    reportDate = str(time.strftime("%c"))

    page.append(www.start_html('FA Port Report for ' + site))
    page.append(www.EMC_Header(site, datacenter, '', csvlink))

    page.append(www.start_table(3, site))
    heading = ['FA Port', 'WWN', 'Device Count', 'Switch', 'Portname', 'Port']
    page.append(www.th_list(heading))

    csvpage.append('FA Port Report for ' + site + '\n\n')
    csvpage.append(', '.join(heading) + '\n')

    for FAPORT in sorted(sgObj.FA2WWNmap):
        port = str(FAPORT)

        wwn = str(sgObj.FA2WWNmap[FAPORT])
        if wwn.lower() in swObj.connectionmap:
            fields = swObj.connectionmap[wwn.lower()]
            switchname = fields[0]
            switchportname = fields[1]
            switchport = fields[2]
        else:
            switchname = 'Not_Connected'
            switchportname = 'Not_Connected'
            switchport = 'Not_Connected'
        if 'Total' in port:
            color = '#C7C5C6'
            switchname = '---'
            switchportname = '---'
            switchport = '---'
        else:
            color = '#DEF2FA'
        dev_count = str(sgObj.FA_Device_Count[FAPORT])
        row = [port, wwn, dev_count, switchname, switchportname, switchport]
        csvpage.append(', '.join(row) + '\n')
        page.append(www.tr_list(row, color))
    page.append(www.end_table)
    page.append(www.end_html)
    f.write_file(htmlfile, page)
    f.write_file(csvfile, csvpage)
        we = self.settings.Engine3D()
        J.s_script = we.JMol_JVXL(webpath = J.wp,name=self.name)
        self.s_script = J.s_script
        return J


#
#
#
#
#
if __name__ == "__main__":

    DebugLevel = logging.DEBUG
    logging.basicConfig(level=DebugLevel)

    from Settings import Settings
    Top.settings = Settings(FromConfigFile = True)

    f = Cube(file=sys.argv[1])
    f.extractXYZ()
    f.processFiles()

    from HTML import HTML
    WebPage = HTML()
    WebPage.makeHeader()
    b1,b2 = f.webData()
    WebPage.makeLine(b1,b2)
    WebPage.makeTail()
    WebPage.write()
Beispiel #12
0
def createReports(sgObj, site, datacenter):
    #
    # Create directories if they don't exist
    orange = '#F7EE6F'
    green = '#69F24E'
    dir = "/www/" + site + "/SG/"
    if not os.path.isdir(dir):
        subprocess.call(["mkdir", dir])
    dir = '/www/' + site + '/CSV'
    if not os.path.isdir(dir):
        subprocess.call(["mkdir", dir])
    #
    #
    reportDate = str(time.strftime("%c"))
    GB = float(sgObj.ProvisionedCapacity) / 1024
    ProvisionedGB = "%.2f" % GB
    info1 = 'Total Porvisioned(GB)=' + str(ProvisionedGB)

    www = HTML()
    html_index = '/www/' + site + '/index.html'
    sgSummCSV = '/www/' + site + '/CSV/' + site + '_SG_Summary.csv'
    f_index = open(html_index, 'w')
    f_SummCSV = open(sgSummCSV, 'w')
    f_SummCSV.write(
        "Storage Group,FAST Policy,Capacity GB,Masking View,Max IOPS,Max MB/s\n"
    )
    linkpath = "/" + site + "/CSV/" + site + '_SG_Summary.csv'
    sgSummLink = '<a href=' + linkpath + '>Summary CSV</a>\n'
    f_index.write(www.start_html('SG Summary'))
    f_index.write(www.EMC_Header(site, datacenter, info1, sgSummLink))
    f_index.write(www.start_table())
    f_index.write(www.end_table)

    # Dictionary: key = policy name and value is a list of html formatted lines, one line per SG with that policy.
    fpTables = {}
    # Dictionary of policies. Used to iterate over the above var.
    policies = {}
    demandpage = '/www/' + site + '/fast_demand.html'
    f = Files()
    f.read_file(demandpage)
    dp = f.readfile[:]
    for sg in sgObj.SGs:
        #
        #
        found = False
        demandtable = ''
        for txt in dp:
            if 'SG_Name' in txt:
                hr = txt
            if str(sg) in txt:
                found = True
                rowdata = txt
        if found:
            demandtable = '<br><p><table border=3 align=center><caption>FAST-VP Demand</caption>\n'
            demandtable += hr
            demandtable += '\n'
            demandtable += rowdata
            demandtable += '\n'
            demandtable += '\n</table>'

        color = ''
        if sg in sgObj.Associations:
            fp = sgObj.Associations[sg]
        else:
            fp = 'NO_FAST_POLICY'
            color = orange
        #
        policies[fp] = 1
        if not fp in fpTables:
            fpTables[fp] = []
        #
        link = "/" + site + "/SG/" + sg + ".html"
        sgGB = float(sgObj.SG2Capacity[sg]) / 1024
        sgProvisionedGB = "%.2f" % sgGB
        MVs = sgObj.SGinMV[sg]
        IOPS_LIMIT = str(sgObj.SG_IOPS_Limit[sg])
        MB_LIMIT = str(sgObj.SG_MB_Limit[sg])
        if MVs.upper() == 'NO':
            color = orange

        rowlist = [
            "<a href=" + link + '>' + sg + "</a>", fp,
            str(sgProvisionedGB), MVs, IOPS_LIMIT, MB_LIMIT
        ]
        SGhtml = www.tr_list(rowlist, color)
        fpTables[fp].append(SGhtml)
        f_SummCSV.write(sg + ',' + fp + ',' + str(sgProvisionedGB) + ',' +
                        MVs + ',' + IOPS_LIMIT + ',' + MB_LIMIT + "\n")
        # go ahead and write out the sg detail HTML page.
        sgfile = "/www/" + site + "/SG/" + sg + ".html"
        sgCSV = "/www/" + site + "/CSV/" + site + '_' + sg + ".csv"
        linkpath = "/" + site + "/CSV/" + site + '_' + sg + ".csv"
        link1 = '<a href=' + linkpath + '>SG CSV</a>\n'
        f_sg = open(sgfile, 'w')
        f_sgCSV = open(sgCSV, 'w')
        f_sgCSV.write('Storage Group Report for ' + sg + '\n\n\n')
        f_sg.write(www.start_html('SG Detail'))
        f_sg.write(www.EMC_Header(site, datacenter, '', link1))
        html = "<p><H3><center>Detailed Storage Report for " + sg + " SSC_VMAX40K_1794</center></H3>\n"
        f_sg.write(html)
        f_sg.write(www.start_table())
        f_sg.write(www.tr + www.th +
                   "Storage Group<th>FAST<TH>Capacity GB</tr>\n")
        html = www.tr + www.td + sg + www.td + fp + www.td + str(
            sgProvisionedGB) + "\n"
        f_sg.write(html)
        f_sg.write(www.end_table)
        f_sg.write(demandtable)
        f_sg.write(www.start_table(3, 'Device List'))
        f_sg.write(www.tr + www.th + "Device<th>Capacity GB</tr>\n")
        f_sgCSV.write("Volume,Capacity GB\n")
        for device in sgObj.SGs[sg]:
            devGB = float(sgObj.SGs[sg][device]) / 1024
            dev_formatted = "%.2f" % devGB
            html = www.tr + www.td + device + www.td + str(
                dev_formatted) + "\n"
            f_sg.write(html)
            f_sgCSV.write(device + ',' + str(dev_formatted) + '\n')
        f_sg.write(www.end_table)
        f_sg.write(www.end_html)
        f_sg.close()
        f_sgCSV.close()

    for fp in policies:
        f_index.write(
            www.start_table(
                3, 'Groups with FAST VP ' + fp + ' Policy Association'))
        f_index.write(
            "<tr><th>Storage Group<th>FAST<TH>Capacity GB<TH>Masking View<TH>IOPS Limit<TH>MB/s Limit</tr>\n"
        )
        for line in fpTables[fp]:
            f_index.write(line)
        f_index.write(www.end_table)
    f_index.write(www.end_html)
    f_index.close()
    f_SummCSV.close()
Beispiel #13
0
def createReports(mvObj, site, datacenter):
    reportDate = str(time.strftime("%c"))
    GB = float(mvObj.mvCapTotal) / 1024
    ProvisionedGB = "%.2f" % GB
    info1 = 'Total Porvisioned=' + str(ProvisionedGB)
    www = HTML()
    f = Files()
    html_index = '/www/' + site + '/views.html'
    viewsCSV = '/www/' + site + '/CSV/' + site + '_views.csv'
    htmlpage = []
    csvpage = []

    htmlpage.append(www.start_html('MV Summary'))
    linkpath = "/" + site + "/CSV/" + site + '_views.csv'
    mvSummLink = '<a href=' + linkpath + '>Views CSV</a>\n'
    htmlpage.append(www.EMC_Header(site, datacenter, info1, mvSummLink))
    csvpage.append('MV Report for ' + site + '\n\n')

    # Write out a table for Masking Views

    csvpage.append("View Name,SG,IG,PG,Capacity\n")
    for pg in mvObj.portgroups:
        htmlpage.append(www.start_table(3, 'Masking Views on PG, ' + pg))
        htmlpage.append(
            "<tr><th>View Name<th>SG<th>IG<th>PG<th>Capacity</tr>\n")
        for mv in mvObj.portgroups[pg]:
            viewname = mv['MV']
            ig = mv['IG']
            pg = mv['PG']
            sg = mv['SG']
            gb = float(mv['MB']) / 1024
            fmtgb = "%.2f" % gb
            gb = str(fmtgb)
            sglink = "<a href=/" + site + "/SG/" + sg + ".html>" + sg + "</a>\n"
            iglink = "<a href=/" + site + "/IG/" + ig + ".html>" + ig + "</a>\n"
            row = [viewname, sglink, iglink, pg, gb]
            htmlpage.append(www.tr_list(row))
            csrow = [viewname, sg, ig, pg, gb]
            csvpage.append(', '.join(csrow) + '\n')
        htmlpage.append(www.end_table)
    htmlpage.append(www.end_html)
    f.write_file(html_index, htmlpage)
    f.write_file(viewsCSV, csvpage)

    dir = "/www/" + site + "/IG/"
    if not os.path.isdir(dir):
        subprocess.call(["mkdir", dir])

    for IG in mvObj.HostInitiatorGroups:
        igPage = '/www/' + site + '/IG/' + IG + '.html'
        f_ig = open(igPage, 'w')
        f_ig.write(www.start_html('Initiator Group ' + IG))
        f_ig.write(www.EMC_Header(site, datacenter))
        # Write out a table for Masking Views
        f_ig.write(www.start_table(3, 'Initiator Group ' + IG))
        f_ig.write("<tr><th>HBA Initiators</tr>\n")

        for wwpn in mvObj.HostInitiatorGroups[IG]:
            f_ig.write("<tr><th>" + wwpn + "</tr>\n")
        f_ig.write(www.end_table)
        f_ig.write(www.end_html)
        f_ig.close()

    for IG in mvObj.ClusterInitiatorGroups:
        igPage = '/www/' + site + '/IG/' + IG + '.html'
        f_ig = open(igPage, 'w')
        f_ig.write(www.start_html('Cluster Initiator Group ' + IG))
        f_ig.write(www.EMC_Header(site, datacenter))
        # Write out a table for Masking Views
        f_ig.write(www.start_table(3, 'Initiator Group ' + IG))
        f_ig.write("<tr><th>Cluster Nodes</tr>\n")

        for wwpn in mvObj.ClusterInitiatorGroups[IG]:
            link = '<a href=/' + site + '/IG/' + wwpn + '.html>' + wwpn + '</a>\n'
            f_ig.write("<tr><th>" + link + "</tr>\n")
        f_ig.write(www.end_table)
        f_ig.write(www.end_html)
        f_ig.close()

    # Database section
    # First, grab a list of known WWPN logins
    vmaxdb = mysql.connect(host="chatst3utsan01",
                           user="******",
                           passwd="emc",
                           db="vmax")
    cur = vmaxdb.cursor()
    query = "SELECT wwpn,ig FROM initiatorgroups"
    results = cur.execute(query)
    rows = cur.fetchall()
    # Now create a simple list of logins. We use this to check whether we've seen a login before.
    # If we know this login, we just update the time seen and array/port.
    knownwwpns = []
    p = re.compile('\w+')
    for row in rows:
        wwpn = row[0]
        ig = row[1]

        key = ''.join(p.findall(wwpn + ig)).lower()
        knownwwpns.append(key)
    # Now get the current date and time.
    today = datetime.date.today()
    formatteddate = today.strftime('%Y-%m-%d')
    now = datetime.datetime.now().time()
    formattedtime = now.strftime('%H:%M:%S')

    for IG in mvObj.HostInitiatorGroups:
        for wwpn in mvObj.HostInitiatorGroups[IG]:
            wwpn = wwpn.lower()
            ig = str(IG)
            ig = ig.lower()

            insertquery = 'insert into initiatorgroups(wwpn,array_name,ig,record_date,record_time) '
            insertquery += " values('" + wwpn + "','" + site + "','"
            insertquery += ig + "',NOW(),NOW() );"

            updatequery = 'update initiatorgroups SET array_name = %s, ig = %s, record_date = %s, record_time = %s '
            updatequery += ' WHERE wwpn = %s AND ig = %s'

            wwpn_ig = ''.join(p.findall(wwpn + ig))

            if wwpn_ig in knownwwpns:

                results = cur.execute(
                    updatequery,
                    (site, ig, formatteddate, formattedtime, wwpn, ig))
            else:
                results = cur.execute(insertquery)
Beispiel #14
0
def createReports(sgObj, site, datacenter):
    www = HTML()
    mailObj = EMail()

    dates = DateString()
    page = []
    csvpage = []
    temppage = []
    today = dates.today
    yesterday = dates.yesterday
    tomorrow = dates.tomorrow
    pagedirs = ['download', 'history']
    subdirs = [today, tomorrow, yesterday]
    f = Files()
    for dir in pagedirs:
        f.dir = '/var/www/html/' + dir
        f.mkdir()
        for sub in subdirs:
            f.dir = '/var/www/html/' + dir + '/' + sub
            f.mkdir()
    csvfile = '/www/download/' + today + '/' + site + '_failed_disks.csv'
    csvfileperm = '/www/download/' + site + '_failed_disks.csv'
    csvlink = '<a href=/download/' + today + '/' + site + '_failed_disks.csv>CSV</a>'
    yesterdaylink = '<a href=/history/' + yesterday + '/' + datacenter + '_Failed_disks.html>' + yesterday + '</a>'
    tomorrowlink = '<a href=/history/' + tomorrow + '/' + datacenter + '_Failed_disks.html>' + tomorrow + '</a>'
    htmlfile1 = '/www/history/' + today + '/' + datacenter + '_Failed_disks.html'
    tempfile = '/www/history/' + tomorrow + '/' + datacenter + '_Failed_disks.html'
    htmlfile2 = '/www/' + datacenter + site + '_Failed_disks.html'
    logfile = '/www/' + site + '_Failed_disks.log'
    log = []

    reportDate = str(time.strftime("%c"))

    page.append(www.start_html('Failed Disk Report for ' + site))
    page.append(www.EMC_Header(site, datacenter, '', csvlink))

    page.append('<p><br><table align=center  border=3>\n')
    row = ['Failed Disk Report', tomorrowlink, yesterdaylink]
    page.append(www.th_list(row))
    page.append(www.end_table)

    page.append(www.start_table(3, site))
    heading = [
        'Disk_ID', 'DA_Port', 'Spindle_ID', 'Tech', 'Speed', 'Vendor', 'Size',
        'Failed'
    ]
    page.append(www.th_list(heading))
    csvpage.append(', '.join(heading) + '\n')

    alertMessage = 'Disk Error...\n\n'
    alertMessage += ', '.join(heading) + '\n\n'
    alerts = 0

    for disk in sgObj.FailedDisks:
        alerts += 1
        info = sgObj.FailedDisks[disk].split()
        row = [
            info[0], info[1], info[2], info[3], info[4], info[5], info[6],
            info[7]
        ]
        alertMessage += ', '.join(row) + '\n\n'
        csvpage.append(', '.join(row) + '\n')
        page.append(www.tr_list(row))

    page.append(www.end_table)
    page.append(www.end_html)
    f.write_file(htmlfile2, page)
    f.write_file(htmlfile1, page)
    f.write_file(csvfile, csvpage)
    f.write_file(csvfileperm, csvpage)
    temppage.append(www.start_html())
    temppage.append(
        www.Not_Found_Header('Report not created yet for ' + tomorrow))
    temppage.append(www.end_html)
    f.write_file(tempfile, temppage)
    if alerts > 0:

        mailObj.subject = "WARNING: DISK ERROR - VMAX Failed Disk Alert " + site + ', ' + datacenter
        mailObj.message = alertMessage
        mailObj.send_mail()

        if len(sgObj.New_Failures.keys()) > 0:
            reportDate = str(time.strftime("%x - %X"))
            for failed_disk in sgObj.New_Failures.keys():
                log.append(reportDate + " :" + mailObj.subject + " " +
                           failed_disk + "\n")
            f.write_file(logfile, log)
Beispiel #15
0
 def test_html_object_generate_full_html_with_body_and_head(self):
     html_obj = HTML(True, True, True)
     html_obj.generate_html()
     self.assertEqual(
         "<!DOCTYPE html>\n <html>\n<head>\n</head>\n<body>\n</body>\n</html>",
         html_obj.html_string)
Beispiel #16
0
 def test_html_object_get_nested_level(self):
     html_obj = HTML()
     self.assertEqual(0, html_obj.get_top_element_nested_level())
Beispiel #17
0
 def test_html_object_generate_not_full_html_with_elements(self):
     html_obj = HTML(False, False, False)
     test_element = html_element(False, "a", "Anchor")
     html_obj.add_element(test_element)
     html_obj.generate_html()
     self.assertEqual("<a>Anchor</a>\n", html_obj.html_string)
Beispiel #18
0
__author__ = "Pradeep"
__version__ = 'develop'

from HTML import HTML

html = HTML()