Skip to content

Commit

Permalink
Updated changes
Browse files Browse the repository at this point in the history
  • Loading branch information
gursewak1997 committed Apr 25, 2024
1 parent 5eca0e4 commit c2ba0a9
Showing 1 changed file with 52 additions and 52 deletions.
104 changes: 52 additions & 52 deletions src/osbuild-manifests/aws_tag.py
Original file line number Diff line number Diff line change
@@ -1,79 +1,79 @@
import os
import subprocess
import json
import argparse




def main():
parser = argparse.ArgumentParser()
parser.add_argument('--stream', dest='stream', type=str, help='Fedora stream', required=True)
parser.add_argument('--dry-run', dest='dry_run', help='Check if the resources have tags but not add them', action='store_true')
args = parser.parse_args()

builds = getBuildsForStream(args.stream)
for build in builds:
build_id=build['id']
arches=build['arches']
for arch in arches:
print(f"The build is {build_id}")
print(f"Parsing AMIs for {build_id} for {arch}")
buildFetch(args.stream, build_id, arch)
meta = open('builds/'+build_id+'/'+arch+'/meta.json')
meta = open(f'builds/{build_id}/{arch}/meta.json')
data = json.load(meta)


if 'amis' in data.keys():
amis = data['amis']
else:
print(f"{build_id} does not have any AMIs for {arch} in meta.json")
continue
# Delete this when actually running. Just here while I make this script
data ={"amis":[{
"name": "us-east-1",
"hvm": "ami-0016d5df3041499f9",
"snapshot": "snap-0c1ca4850fcd5e573"
}]}
amis = data['amis']
# data ={"amis":[{
# "name": "us-east-1",
# "hvm": "ami-0016d5df3041499f9",
# "snapshot": "snap-0c1ca4850fcd5e573"
# }]}
# amis = data['amis']

for ami in amis:
checkAndAddTag(ami["hvm"], ami["name"])
checkAndAddTag(ami["snapshot"], ami["name"])
return
region = ami["name"]
checkAndAddTag(ami["hvm"], region, args.dry_run)
checkAndAddTag(ami["snapshot"], region, args.dry_run)
return

def checkAndAddTag(resourceId, region, dry_run):
describeTagsCmd = f'aws ec2 describe-tags --filters Name=resource-id,Values={resourceId} --region {region} --output=json'
tagCheck=subprocess.run([describeTagsCmd], shell=True, capture_output=True, text=True)
if tagCheck.stdout == None or tagCheck.stdout == '':
print(f"No tags detected for {resourceId}; assuming it doesn't exist")
return
tagCheck=json.loads(tagCheck.stdout)

def checkAndAddTag(resourceId, region):
tagExists = checkTag(resourceId)
if tagExists:
print(f"{resourceId} already tagged with FedoraUser=coreos tag")
if any((tag['Key'] == 'FedoraGroup' and tag['Value'] == 'coreos') for tag in tagCheck['Tags']):
print(f"{resourceId} already tagged with FedoraGroup=coreos tag")
return
else:
addTag(resourceId, region)
print(f"FedoraUser=coreos tag successfully added to {resourceId}")

def checkTag(resourceId):
checkTagCmd = f'aws ec2 describe-tags --filters Name=resource-id,Values={resourceId} Name=value,Values=coreos'
try:
tagCheck=subprocess.run([checkTagCmd], shell=True, capture_output=True, text=True)
if "FedoraUser" and "coreos" in tagCheck.stdout:
return True
return False
except subprocess.CalledProcessError as e:
return(e.output)
if dry_run:
print(f"Would add tag 'FedoraGroup=coreos' to {resourceId} in region {region}")
return
else:
addTag(resourceId, region, dry_run)

def addTag(resourceId, region, dry_run):
if dry_run:
print(f"Would add tag 'FedoraGroup=coreos' to {resourceId} in region {region}")
else:
UpdateTagCmd = f'aws ec2 create-tags --resource {resourceId} --tags Key="FedoraGroup",Value="coreos" --region {region}'
subprocess.run([UpdateTagCmd], shell=True)
print(f"'FedoraGroup=coreos' tag successfully added to {resourceId}")

def addTag(resourceId, region):
UpdateTagCmd = f'aws ec2 create-tags --resource {resourceId} --tags Key="FedoraUser",Value="coreos" --region {region}'
try:
subprocess.run([UpdateTagCmd], shell=True)
except subprocess.CalledProcessError as e:
return(e.output)

def getBuildsForStream(stream):
buildFetch = 'cosa buildfetch --stream='+ stream + ' --arch=all'
try:
subprocess.call(['/bin/bash', '-i', '-c', buildFetch])
except subprocess.CalledProcessError as e:
return(e.output)

f = open('builds/builds.json')
subprocess.check_output(['/bin/bash', '-i', '-c', buildFetch])

f = open(f'builds/builds.json')
data = json.load(f)
return data['builds']

def buildFetch(stream, build, arch):
buildFetchCmd = 'cosa buildfetch --stream='+ stream + ' --build=' + build + ' --arch=' + arch
try:
subprocess.call(['/bin/bash', '-i', '-c', buildFetchCmd])
except subprocess.CalledProcessError as e:
return(e.output)

subprocess.check_output(['/bin/bash', '-i', '-c', buildFetchCmd])

if __name__ == '__main__':
main()

0 comments on commit c2ba0a9

Please sign in to comment.