Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 10 additions & 11 deletions files/image_config/corefile_uploader/core_analyzer.rc.json
Original file line number Diff line number Diff line change
@@ -1,18 +1,17 @@
{
"env": {
"https_proxy": ""
},
"azure_sonic_core_storage": {
"account_name": "corefilecollection",
"account_key": "",
"share_name": "corefiles-root"
},
"local_work": {
"core_upload": "/tmp/core_upload/"
},
},
"azure_sonic_core_storage": {
"account_name": "corefilecollection",
"account_key": "",
"share_name": "corefiles-root"
},
"metadata_files_in_archive": {
"version": "/etc/sonic/sonic_version.yml",
"version": "/etc/sonic/sonic_version.yml",
"core_info": "core_info.json"
},
"env": {
"https_proxy": ""
}
}

30 changes: 6 additions & 24 deletions files/image_config/corefile_uploader/core_uploader.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
import yaml
import json
import syslog
from shutil import rmtree
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
from azure.storage.file import FileService
Expand Down Expand Up @@ -61,26 +60,9 @@ def log_debug(m):
log_msg(syslog.LOG_DEBUG, this_file, m)


def mkdir(p):
l = p.split("/")
if p.endswith("/"):
l.pop()

e = l[0:len(l)]

while not os.path.exists("/".join(e)):
e.pop()

while len(e) != len(l):
e.append(l[len(e)])
os.mkdir("/".join(e))

def make_new_dir(p):
if os.path.isdir(p):
rmtree(p)
elif os.path.exists(p):
os.path.unlink(p)
mkdir(p)
os.system("rm -rf " + p)
os.system("mkdir -p " + p)

def parse_a_json(data, prefix, val):
for i in data:
Expand Down Expand Up @@ -117,7 +99,7 @@ def get_core_info(self, corepath, devicename):

lpath = self.get_data(("metadata_files_in_archive", "core_info"))
f = open(lpath, "w+")
f.write(json.dumps(info))
f.write(json.dumps(info, indent=4))
f.close()

return lpath
Expand Down Expand Up @@ -160,7 +142,7 @@ def init():

hostname = socket.gethostname()
if not hostname:
raise Exception("Failed to read hostname from /etc/sonic/sonic_version.yml")
raise Exception("Failed to read hostname")

acctname = cfg.get_data(("azure_sonic_core_storage", "account_name"))
acctkey = cfg.get_data(("azure_sonic_core_storage", "account_key"))
Expand Down Expand Up @@ -270,10 +252,10 @@ def upload_file(fname, fpath):
log_err("core uploader failed: Failed during upload (" + str(e) +")")
fail_msg = str(e)
i += 1
if i >= MAX_RETRIES:
raise Exception("Failed while uploading. msg(" + fail_msg + ") after " + str(i) + " retries")
time.sleep(PAUSE_ON_FAIL)

if i >= MAX_RETRIES:
raise Exception("Failed while uploading. msg(" + fail_msg + ") after " + str(i) + " retries")

@staticmethod
def scan():
Expand Down
55 changes: 55 additions & 0 deletions files/image_config/corefile_uploader/update_json.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
#! /usr/bin/env python

import os
import sys
import json
import argparse

TMP_SUFFIX = ".tmp"
BAK_SUFFIX = ".bak"

def dict_update(dst, patch):
for k in patch.keys():
if type(patch[k]) == dict:
dst[k] = dict_update(dst[k], patch[k])
else:
dst[k] = patch[k]
return dst

def do_update(rcf, patchf):
dst = {}
patch = {}

tmpf = rcf + TMP_SUFFIX
bakf = rcf + BAK_SUFFIX

with open(srcf, "r") as f:
dst = json.load(f)

with open(patchf, "r") as f:
patch = json.load(f)

dst = dict_update(dst, patch)

with open(tmpf, "w") as f:
json.dump(dst, f, indent = 4)

os.rename(rcf, bakf)
os.rename(tmpf, rcf)


def main():
parser=argparse.ArgumentParser(description="Update JSON based file")
parser.add_argument("-r", "--rc", help="JSON file to be updated")
parser.add_argument("-p", "--patch", help="JSON file holding patch")
args = parser.parse_args()

if not args.rc or not args.patch:
raise Exception("check usage")

do_update(args.rc, args.patch)

if __name__ == '__main__':
main()