in servicecatalog_factory/commands/portfolios.py [0:0]
def import_product_set(f, name, portfolio_name):
url = f"https://raw.githubusercontent.com/awslabs/aws-service-catalog-products/master/{name}/portfolio.yaml"
response = requests.get(url)
logger.info(f"Getting {url}")
source_portfolio = yaml.safe_load(f.read())
target = None
if portfolio_name is None:
if source_portfolio.get("Products") is None:
source_portfolio.get["Products"] = {}
target = source_portfolio.get["Products"]
else:
if source_portfolio.get("Portfolios") is None:
source_portfolio["Portfolios"] = []
for p in source_portfolio.get("Portfolios"):
if p.get("DisplayName") == portfolio_name:
if p.get("Products"):
target = p.get("Products")
elif p.get("Components"):
target = p.get("Components")
else:
target = p["Products"] = []
if target is None:
p = {
"DisplayName": portfolio_name,
"Products": [],
}
target = p.get("Products")
source_portfolio["Portfolios"].append(p)
portfolio_segment = yaml.safe_load(response.text)
products = portfolio_segment.get("Portfolios").get(
"Components", []
) + portfolio_segment.get("Portfolios").get("Products", [])
for product in products:
target.append(product)
for version in product.get("Versions"):
if version.get("Source").get("Provider") == "CodeCommit":
configuration = version.get("Source").get("Configuration")
branch_name = configuration.get("BranchName")
repository_name = configuration.get("RepositoryName")
os.system(
f"aws codecommit create-repository --repository-name {repository_name}"
)
command = (
"git clone "
"--config 'credential.helper=!aws codecommit credential-helper $@' "
"--config 'credential.UseHttpPath=true' "
f"https://git-codecommit.{constants.HOME_REGION}.amazonaws.com/v1/repos/{repository_name}"
)
os.system(command)
remote_name = repository_name.replace(f"{name}-", "")
source = f"https://github.com/awslabs/aws-service-catalog-products/trunk/{name}/{remote_name}/{version.get('Name')}"
os.system(f"svn export {source} {repository_name} --force")
if branch_name == "master":
os.system(
f"cd {repository_name} && git add . && git commit -am 'initial add' && git push"
)
else:
os.system(
f"cd {repository_name} && git checkout -b {branch_name} && git add . && git commit -am 'initial add' && git push"
)
with open(f.name, "w") as f:
f.write(yaml.safe_dump(source_portfolio))