The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
grafana/scripts/build/ci-msi-build/oss/generator/utils.py

123 lines
4.4 KiB

import zipfile
import os
import glob
import re
import shutil
import wget
from jinja2 import Template, Environment, FileSystemLoader
def extract_zip(filename, target_dir):
with zipfile.ZipFile(filename, 'r') as zip_ref:
zip_ref.extractall(target_dir)
def get_nssm(tmpPath, version):
if not os.path.isdir(tmpPath):
os.mkdir(tmpPath)
target_filename = '{}/nssm-{}.zip'.format(tmpPath, version)
exists = os.path.isfile(target_filename)
if exists:
return target_filename
url = 'https://nssm.cc/release/nssm-{}.zip'.format(version)
print('NSSM url is {}'.format(url))
filename = wget.download(url, out=target_filename, bar=wget.bar_thermometer)
return filename
def get_zip(version, target_filename):
exists = os.path.isfile(target_filename)
if exists:
return target_filename
url = 'https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-{}.windows-amd64.zip'.format(version)
#url = 'https://dl.grafana.com/enterprise/release/grafana-enterprise-{}.windows-amd64.zip'.format(version)
filename = wget.download(url, out=target_filename, bar=wget.bar_thermometer)
return filename
#
#
#
def detect_version(dist_path):
detectedVersion = ''
detectedHash = ''
isEnterprise = False
print("Detecting Version...")
# grafana-6.0.0-ca0bc2c5pre3.windows-amd64.zip
# get files in directory matching pattern
fileList = glob.glob(dist_path + '/grafana*.windows-amd64.zip')
print(fileList)
if len(fileList) == 0:
print('Skipping detection, no matches')
return
firstFile = fileList[0]
p1 = re.search(r'grafana-(\d\.\d\.\d)\.windows-amd64.zip$', firstFile)
p2 = re.search(r'grafana-(\d\.\d\.\d)-(.*)\.windows-amd64.zip$', firstFile)
if p1:
detectedVersion = p1.group(1)
if p2:
detectedVersion = p2.group(1)
detectedHash = p2.group(2)
return detectedVersion, detectedHash, isEnterprise
#if os.path.isdir(dist_path + 'enterprise-dist'):
# # grafana-enterprise-6.0.0-29b28127pre3.windows-amd64.zip
# # get files in directory matching pattern
# fileList = glob.glob(dist_path + '/enterprise-dist/grafana*.windows-amd64.zip')
# firstFile = fileList[0]
# p1 = re.search(r'grafana-enterprise-(\d\.\d\.\d)\.windows-amd64.zip$', firstFile)
# p2 = re.search(r'grafana-enterprise-(\d\.\d\.\d)-(.*)\.windows-amd64.zip$', firstFile)
# if p1:
# detectedVersion = p1.group(1)
# isEnterprise = True
# if p2:
# detectedVersion = p2.group(1)
# detectedHash = p2.group(2)
# isEnterprise = True
# return detectedVersion, detectedHash, isEnterprise
def generate_product_wxs(env, config, features, scratch_file, target_dir):
template = env.get_template('common/product.wxs.j2')
output = template.render(config=config, features=features)
fh = open(scratch_file, 'w')
fh.write(output)
fh.close()
shutil.copy2(scratch_file, target_dir)
def generate_service_wxs(env, grafana_version, scratch_file, target_dir, nssm_version='2.24'):
template = env.get_template('common/grafana-service.wxs.j2')
output = template.render(grafana_version=grafana_version, nssm_version=nssm_version)
fh = open(scratch_file, 'w')
fh.write(output)
fh.close()
shutil.copy2(scratch_file, target_dir)
def generate_firewall_wxs(env, grafana_version, scratch_file, target_dir):
os.system("ls -al templates")
template = env.get_template('common/grafana-firewall.wxs.j2')
output = template.render(grafana_version=grafana_version)
fh = open(scratch_file, 'w')
fh.write(output)
fh.close()
shutil.copy2(scratch_file, target_dir)
def generate_oracle_environment_wxs(env, instant_client_version, scratch_file, target_dir):
template = env.get_template('oracle/oracle-environment.wxs.j2')
output = template.render(instant_client_version=instant_client_version)
fh = open(scratch_file, 'w')
fh.write(output)
fh.close()
shutil.copy2(scratch_file, target_dir)
def copy_static_files(target_dir):
for item in os.listdir('resources/images'):
s = os.path.join('resources/images', item)
d = os.path.join(target_dir, item)
shutil.copy2(s, d)
for item in os.listdir('resources/license'):
s = os.path.join('resources/license', item)
d = os.path.join(target_dir, item)
shutil.copy2(s, d)