Skip to content
This repository was archived by the owner on Sep 12, 2024. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
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
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -272,7 +272,7 @@ providers:
ifeq ($(BUILD_OMS),BUILD_OMS)
nx:
rm -rf output/staging; \
VERSION="1.4"; \
VERSION="1.5"; \
PROVIDERS="nxService nxPackage nxUser nxGroup nxAvailableUpdates"; \
STAGINGDIR="output/staging/$@/DSCResources"; \
cat Providers/Modules/$@.psd1 | sed "s@<MODULE_VERSION>@$${VERSION}@" > intermediate/Modules/$@.psd1; \
Expand All @@ -294,7 +294,7 @@ nx:
else
nx:
rm -rf output/staging; \
VERSION="1.4"; \
VERSION="1.5"; \
PROVIDERS="nxFile nxScript nxUser nxGroup nxService nxPackage nxEnvironment nxSshAuthorizedKeys nxArchive nxFileLine"; \
STAGINGDIR="output/staging/$@/DSCResources"; \
cat Providers/Modules/$@.psd1 | sed "s@<MODULE_VERSION>@$${VERSION}@" > intermediate/Modules/$@.psd1; \
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,4 +45,4 @@ def filter(tag, time, record)
return linuxUpdates.transform_and_wrap(xml_string, @hostname, time)
end # filter
end # class
end # module
end # module
83 changes: 51 additions & 32 deletions Providers/Scripts/2.4x-2.5x/Scripts/nxAvailableUpdates.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import fnmatch
import time
import os
import uuid

protocol = imp.load_source('protocol', '../protocol.py')
nxDSCLog = imp.load_source('nxDSCLog', '../nxDSCLog.py')
Expand Down Expand Up @@ -71,9 +72,15 @@ def GetAptUpdates(Name):

updates_list = []
d = {}
g_guid = str(uuid.uuid4())
privileged_path = "/tmp/"

#Collect Security updates
security_sources_list = '/tmp/az-update-security.list'
security_sources_list = os.path.join(privileged_path, 'msft-v1-assess-security-{0}.list'.format(g_guid))
prep_security_sources_list_cmd = 'grep security /etc/apt/sources.list > ' + security_sources_list

#to remove all files, following this pattern
remove_security_sources_list_cmd = 'rm ' + os.path.join(privileged_path, 'msft-v1-assess-security-*.list')
dist_upgrade_simulation_cmd_template = 'LANG=en_US.UTF8 apt-get -s dist-upgrade <SOURCES> '
# Refresh the repo
if helperlib.CONFIG_SYSCONFDIR_DSC == "omsconfig":
Expand All @@ -83,38 +90,51 @@ def GetAptUpdates(Name):
code, out = RunGetOutput(cmd, False, False)
#Get Security Patches list
security_patch_list = []
code, out = RunGetOutput(prep_security_sources_list_cmd,False,False)
security_updates_cmd = dist_upgrade_simulation_cmd_template.replace('<SOURCES>', '-oDir::Etc::Sourcelist=' + security_sources_list)
code,out = RunGetOutput(security_updates_cmd,False,False)
srch_txt = r'Inst[ ](.*?)[ ].*?[(](.*?)[ ](.*?)[ ]\[(.*?)\]'
srch = re.compile(srch_txt, re.M | re.S)
pkg_list = srch.findall(str(out))
for package in pkg_list:
security_patch_list.append(package[0])
cmd = 'LANG=en_US.UTF8 apt-get -s dist-upgrade | grep "^Inst"'
LG().Log('DEBUG', "Retrieving update package list using cmd:" + cmd)
code, out = RunGetOutput(cmd, False, False)
if len(out) < 2:

try:
code, out = RunGetOutput(prep_security_sources_list_cmd,False,False)
if code != 0:
LG().Log('ERROR', "Unexpected error in running cmd {0} : {1}".format(prep_security_sources_list_cmd, out))
raise Exception("Unexpected error in running cmd {0} : {1}".format(prep_security_sources_list_cmd, out))

security_updates_cmd = dist_upgrade_simulation_cmd_template.replace('<SOURCES>', '-oDir::Etc::Sourcelist=' + security_sources_list)
code,out = RunGetOutput(security_updates_cmd,False,False)

srch_txt = r'Inst[ ](.*?)[ ].*?[(](.*?)[ ](.*?)[ ]\[(.*?)\]'
srch = re.compile(srch_txt, re.M | re.S)
pkg_list = srch.findall(str(out))
for package in pkg_list:
security_patch_list.append(package[0])
cmd = 'LANG=en_US.UTF8 apt-get -s dist-upgrade | grep "^Inst"'
LG().Log('DEBUG', "Retrieving update package list using cmd:" + cmd)

if len(out) < 2:
return updates_list
srch_txt = r'Inst[ ](.*?)[ ].*?[(](.*?)[ ](.*?)[ ]\[(.*?)\]'
srch = re.compile(srch_txt, re.M | re.S)
pkg_list = srch.findall(out)
for pkg in pkg_list:
d['BuildDate'] = ''
d['Name'] = pkg[0]
if len(Name) and not fnmatch.fnmatch(d['Name'], Name):
continue
d['Architecture'] = pkg[3]
d['Version'] = pkg[1]
if d['Name'] in security_patch_list:
d['Classification'] = "Security Updates"
else:
d['Classification'] = "Others"
d['Repository'] = pkg[2]
updates_list.append(copy.deepcopy(d))

LG().Log('DEBUG', "Number of packages being written to the XML: " + str(len(updates_list)))
return updates_list
srch_txt = r'Inst[ ](.*?)[ ].*?[(](.*?)[ ](.*?)[ ]\[(.*?)\]'
srch = re.compile(srch_txt, re.M | re.S)
pkg_list = srch.findall(out)
for pkg in pkg_list:
d['BuildDate'] = ''
d['Name'] = pkg[0]
if len(Name) and not fnmatch.fnmatch(d['Name'], Name):
continue
d['Architecture'] = pkg[3]
d['Version'] = pkg[1]
if d['Name'] in security_patch_list:
d['Classification'] = "Security Updates"
finally:
rmcode, rmout = RunGetOutput(remove_security_sources_list_cmd,False,False)
if rmcode != 0:
LG().Log('DEBUG', "Not able to delete {0}. Error: {1}".format(security_sources_list, rmout))
else:
d['Classification'] = "Others"
d['Repository'] = pkg[2]
updates_list.append(copy.deepcopy(d))
LG().Log('DEBUG', "Number of packages being written to the XML: " + str(len(updates_list)))
return updates_list

LG().Log('DEBUG', "{0} folder cleared".format(privileged_path))

def GetYumUpdates(Name):
# Format:
Expand Down Expand Up @@ -193,7 +213,6 @@ def GetYumUpdates(Name):

if len(param_list) == 0 and len(param_list2) > 0:
LG().Log('DEBUG', "No valid packages found. Falling back to package_info based on the package name.")
param_list = param_list2

cmd = "LANG=en_US.UTF8 " + yum_info + param_list
LG().Log('DEBUG', "Retrieving individual package information from Yum using cmd: " + cmd)
Expand Down
83 changes: 51 additions & 32 deletions Providers/Scripts/2.6x-2.7x/Scripts/nxAvailableUpdates.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import fnmatch
import time
import os
import uuid

protocol = imp.load_source('protocol', '../protocol.py')
nxDSCLog = imp.load_source('nxDSCLog', '../nxDSCLog.py')
Expand Down Expand Up @@ -71,9 +72,15 @@ def GetAptUpdates(Name):

updates_list = []
d = {}
g_guid = str(uuid.uuid4())
privileged_path = "/tmp/"

#Collect Security updates
security_sources_list = '/tmp/az-update-security.list'
security_sources_list = os.path.join(privileged_path, 'msft-v1-assess-security-{0}.list'.format(g_guid))
prep_security_sources_list_cmd = 'grep security /etc/apt/sources.list > ' + security_sources_list

#to remove all files, following this pattern
remove_security_sources_list_cmd = 'rm ' + os.path.join(privileged_path, 'msft-v1-assess-security-*.list')
dist_upgrade_simulation_cmd_template = 'LANG=en_US.UTF8 apt-get -s dist-upgrade <SOURCES> '
# Refresh the repo
if helperlib.CONFIG_SYSCONFDIR_DSC == "omsconfig":
Expand All @@ -83,38 +90,51 @@ def GetAptUpdates(Name):
code, out = RunGetOutput(cmd, False, False)
#Get Security Patches list
security_patch_list = []
code, out = RunGetOutput(prep_security_sources_list_cmd,False,False)
security_updates_cmd = dist_upgrade_simulation_cmd_template.replace('<SOURCES>', '-oDir::Etc::Sourcelist=' + security_sources_list)
code,out = RunGetOutput(security_updates_cmd,False,False)
srch_txt = r'Inst[ ](.*?)[ ].*?[(](.*?)[ ](.*?)[ ]\[(.*?)\]'
srch = re.compile(srch_txt, re.M | re.S)
pkg_list = srch.findall(str(out))
for package in pkg_list:
security_patch_list.append(package[0])
cmd = 'LANG=en_US.UTF8 apt-get -s dist-upgrade | grep "^Inst"'
LG().Log('DEBUG', "Retrieving update package list using cmd:" + cmd)
code, out = RunGetOutput(cmd, False, False)
if len(out) < 2:
try:
code, out = RunGetOutput(prep_security_sources_list_cmd,False,False)
if code != 0:
LG().Log('ERROR', "Unexpected error in running cmd {0} : {1}".format(prep_security_sources_list_cmd, out))
raise Exception("Unexpected error in running cmd {0} : {1}".format(prep_security_sources_list_cmd, out))

security_updates_cmd = dist_upgrade_simulation_cmd_template.replace('<SOURCES>', '-oDir::Etc::Sourcelist=' + security_sources_list)
code,out = RunGetOutput(security_updates_cmd,False,False)

srch_txt = r'Inst[ ](.*?)[ ].*?[(](.*?)[ ](.*?)[ ]\[(.*?)\]'
srch = re.compile(srch_txt, re.M | re.S)
pkg_list = srch.findall(str(out))
for package in pkg_list:
security_patch_list.append(package[0])
cmd = 'LANG=en_US.UTF8 apt-get -s dist-upgrade | grep "^Inst"'
LG().Log('DEBUG', "Retrieving update package list using cmd:" + cmd)
code, out = RunGetOutput(cmd, False, False)

if len(out) < 2:
return updates_list
srch_txt = r'Inst[ ](.*?)[ ].*?[(](.*?)[ ](.*?)[ ]\[(.*?)\]'
srch = re.compile(srch_txt, re.M | re.S)
pkg_list = srch.findall(out)
for pkg in pkg_list:
d['BuildDate'] = ''
d['Name'] = pkg[0]
if len(Name) and not fnmatch.fnmatch(d['Name'], Name):
continue
d['Architecture'] = pkg[3]
d['Version'] = pkg[1]
if d['Name'] in security_patch_list:
d['Classification'] = "Security Updates"
else:
d['Classification'] = "Others"
d['Repository'] = pkg[2]
updates_list.append(copy.deepcopy(d))

LG().Log('DEBUG', "Number of packages being written to the XML: " + str(len(updates_list)))
return updates_list
srch_txt = r'Inst[ ](.*?)[ ].*?[(](.*?)[ ](.*?)[ ]\[(.*?)\]'
srch = re.compile(srch_txt, re.M | re.S)
pkg_list = srch.findall(out)
for pkg in pkg_list:
d['BuildDate'] = ''
d['Name'] = pkg[0]
if len(Name) and not fnmatch.fnmatch(d['Name'], Name):
continue
d['Architecture'] = pkg[3]
d['Version'] = pkg[1]
if d['Name'] in security_patch_list:
d['Classification'] = "Security Updates"
finally:
rmcode, rmout = RunGetOutput(remove_security_sources_list_cmd,False,False)
if rmcode != 0:
LG().Log('DEBUG', "Not able to delete {0}. Error: {1}".format(security_sources_list, rmout))
else:
d['Classification'] = "Others"
d['Repository'] = pkg[2]
updates_list.append(copy.deepcopy(d))
LG().Log('DEBUG', "Number of packages being written to the XML: " + str(len(updates_list)))
return updates_list

LG().Log('DEBUG', "{0} folder cleared".format(privileged_path))

def GetYumUpdates(Name):
# Format:
Expand Down Expand Up @@ -193,7 +213,6 @@ def GetYumUpdates(Name):

if len(param_list) == 0 and len(param_list2) > 0:
LG().Log('DEBUG', "No valid packages found. Falling back to package_info based on the package name.")
param_list = param_list2

cmd = "LANG=en_US.UTF8 " + yum_info + param_list
LG().Log('DEBUG', "Retrieving individual package information from Yum using cmd: " + cmd)
Expand Down
87 changes: 54 additions & 33 deletions Providers/Scripts/3.x/Scripts/nxAvailableUpdates.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import fnmatch
import time
import os
import uuid

protocol = imp.load_source('protocol', '../protocol.py')
nxDSCLog = imp.load_source('nxDSCLog', '../nxDSCLog.py')
Expand Down Expand Up @@ -69,9 +70,15 @@ def GetAptUpdates(Name):

updates_list = []
d = {}
g_guid = str(uuid.uuid4())
privileged_path = "/tmp/"

#Collect Security updates
security_sources_list = '/tmp/az-update-security.list'
security_sources_list = os.path.join(privileged_path, 'msft-v1-assess-security-{0}.list'.format(g_guid))
prep_security_sources_list_cmd = 'grep security /etc/apt/sources.list > ' + security_sources_list

#to remove all files, following this pattern
remove_security_sources_list_cmd = 'rm ' + os.path.join(privileged_path, 'msft-v1-assess-security-*.list')
dist_upgrade_simulation_cmd_template = 'LANG=en_US.UTF8 apt-get -s dist-upgrade <SOURCES> '
# Refresh the repo
if helperlib.CONFIG_SYSCONFDIR_DSC == "omsconfig":
Expand All @@ -81,38 +88,53 @@ def GetAptUpdates(Name):
code, out = RunGetOutput(cmd, False, False)
#Get Security Patches list
security_patch_list = []
code, out = RunGetOutput(prep_security_sources_list_cmd,False,False)
security_updates_cmd = dist_upgrade_simulation_cmd_template.replace('<SOURCES>', '-oDir::Etc::Sourcelist=' + security_sources_list)
code,out = RunGetOutput(security_updates_cmd,False,False)
srch_txt = r'Inst[ ](.*?)[ ].*?[(](.*?)[ ](.*?)[ ]\[(.*?)\]'
srch = re.compile(srch_txt, re.M | re.S)
pkg_list = srch.findall(str(out))
for package in pkg_list:
security_patch_list.append(package[0])
cmd = 'LANG=en_US.UTF8 apt-get -s dist-upgrade | grep "^Inst"'
LG().Log('DEBUG', "Retrieving update package list using cmd:" + cmd)
code, out = RunGetOutput(cmd, False, False)
if len(out) < 2:

try:
code, out = RunGetOutput(prep_security_sources_list_cmd,False,False)
if code != 0:
LG().Log('ERROR', "Unexpected error in running cmd {0} : {1}".format(prep_security_sources_list_cmd, out))
raise Exception("Unexpected error in running cmd {0} : {1}".format(prep_security_sources_list_cmd, out))

security_updates_cmd = dist_upgrade_simulation_cmd_template.replace('<SOURCES>', '-oDir::Etc::Sourcelist=' + security_sources_list)
code,out = RunGetOutput(security_updates_cmd,False,False)

srch_txt = r'Inst[ ](.*?)[ ].*?[(](.*?)[ ](.*?)[ ]\[(.*?)\]'
srch = re.compile(srch_txt, re.M | re.S)
pkg_list = srch.findall(str(out))
for package in pkg_list:
security_patch_list.append(package[0])

cmd = 'LANG=en_US.UTF8 apt-get -s dist-upgrade | grep "^Inst"'
LG().Log('DEBUG', "Retrieving update package list using cmd:" + cmd)
code, out = RunGetOutput(cmd, False, False)
if len(out) < 2:
return updates_list

srch_txt = r'Inst[ ](.*?)[ ].*?[(](.*?)[ ](.*?)[ ]\[(.*?)\]'
srch = re.compile(srch_txt, re.M | re.S)
pkg_list = srch.findall(out)
for pkg in pkg_list:
d['BuildDate'] = ''
d['Name'] = pkg[0]
if len(Name) and not fnmatch.fnmatch(d['Name'], Name):
continue
d['Architecture'] = pkg[3]
d['Version'] = pkg[1]
if d['Name'] in security_patch_list:
d['Classification'] = "Security Updates"
else:
d['Classification'] = "Others"
d['Repository'] = pkg[2]
updates_list.append(copy.deepcopy(d))

LG().Log('DEBUG', "Number of packages being written to the XML: " + str(len(updates_list)))
return updates_list
srch_txt = r'Inst[ ](.*?)[ ].*?[(](.*?)[ ](.*?)[ ]\[(.*?)\]'
srch = re.compile(srch_txt, re.M | re.S)
pkg_list = srch.findall(out)
for pkg in pkg_list:
d['BuildDate'] = ''
d['Name'] = pkg[0]
if len(Name) and not fnmatch.fnmatch(d['Name'], Name):
continue
d['Architecture'] = pkg[3]
d['Version'] = pkg[1]
if d['Name'] in security_patch_list:
d['Classification'] = "Security Updates"
finally:
rmcode, rmout = RunGetOutput(remove_security_sources_list_cmd,False,False)
if rmcode != 0:
LG().Log('DEBUG', "Not able to delete {0}. Error: {1}".format(security_sources_list, rmout))
else:
d['Classification'] = "Others"
d['Repository'] = pkg[2]
updates_list.append(copy.deepcopy(d))
LG().Log('DEBUG', "Number of packages being written to the XML: " + str(len(updates_list)))
return updates_list

LG().Log('DEBUG', "{0} folder cleared".format(privileged_path))

def GetYumUpdates(Name):
# Format:
Expand Down Expand Up @@ -191,7 +213,6 @@ def GetYumUpdates(Name):

if len(param_list) == 0 and len(param_list2) > 0:
LG().Log('DEBUG', "No valid packages found. Falling back to package_info based on the package name.")
param_list = param_list2

cmd = "LANG=en_US.UTF8 " + yum_info + param_list
LG().Log('DEBUG', "Retrieving individual package information from Yum using cmd: " + cmd)
Expand Down Expand Up @@ -467,4 +488,4 @@ def GetPackageManager():
if ret == 'apt-get':
ret = 'apt'
break
return ret
return ret
Loading