@Override protected Account emptyAccount() { return new AzureAccount(); } }
@Override public AzureBakeryDefaults emptyBakeryDefaults() { AzureBakeryDefaults result = new AzureBakeryDefaults(); result.setTemplateFile("azure-linux.json"); return result; } }
@Override protected Account buildAccount(String accountName) { return ((AzureAccount) new AzureAccount().setName(accountName)) .setClientId(clientId) .setAppKey(appKey) .setTenantId(tenantId) .setSubscriptionId(subscriptionId) .setObjectId(objectId) .setDefaultResourceGroup(defaultResourceGroup) .setDefaultKeyVault(defaultKeyVault) .setPackerResourceGroup(packerResourceGroup) .setPackerStorageAccount(packerStorageAccount); }
@Override protected Account editAccount(AzureAccount account) { account.setClientId(isSet(clientId) ? clientId : account.getClientId()); account.setAppKey(isSet(appKey) ? appKey : account.getAppKey()); account.setTenantId(isSet(tenantId) ? tenantId : account.getTenantId()); account.setSubscriptionId(isSet(subscriptionId) ? subscriptionId : account.getSubscriptionId()); account.setObjectId(isSet(objectId) ? objectId : account.getObjectId()); account.setDefaultResourceGroup(isSet(defaultResourceGroup) ? defaultResourceGroup : account.getDefaultResourceGroup()); account.setDefaultKeyVault(isSet(defaultKeyVault) ? defaultKeyVault : account.getDefaultKeyVault()); account.setPackerResourceGroup(isSet(packerResourceGroup) ? packerResourceGroup : account.getPackerResourceGroup()); account.setPackerStorageAccount(isSet(packerStorageAccount) ? packerStorageAccount : account.getPackerStorageAccount()); return account; } }
@Override protected BaseImage editBaseImage(AzureBaseImage baseImage) { AzureBaseImage.AzureOperatingSystemSettings imageSettings = baseImage.getBaseImage(); imageSettings = imageSettings != null ? imageSettings : new AzureBaseImage.AzureOperatingSystemSettings(); imageSettings.setPublisher(isSet(publisher) ? publisher : imageSettings.getPublisher()); imageSettings.setOffer(isSet(offer) ? offer : imageSettings.getOffer()); imageSettings.setSku(isSet(sku) ? sku : imageSettings.getSku()); imageSettings.setVersion(isSet(version) ? version : imageSettings.getVersion()); baseImage.setBaseImage(imageSettings); return baseImage; } }
@Override public void validate(ConfigProblemSetBuilder p, AzureAccount n) { String clientId = n.getClientId(); String appKey = n.getAppKey(); String tenantId = n.getTenantId(); String subscriptionId = n.getSubscriptionId(); String defaultResourceGroup = n.getDefaultResourceGroup(); String defaultKeyVault = n.getDefaultKeyVault(); String packerResourceGroup = n.getPackerResourceGroup(); String packerStorageAccount = n.getPackerStorageAccount();
@Override public void validate(ConfigProblemSetBuilder p, AzureBaseImage n) { AzureCredentials credentials = credentialsList.get(0); // The first credentials should be fine since we're validating against public images VirtualMachineImagesOperations imagesOps = credentials.getComputeClient().getVmImageOps(); AzureBaseImage.AzureOperatingSystemSettings osSettings = n.getBaseImage(); String version = osSettings.getVersion(); try { if (version != null && version.equals("latest")) { imagesOps.list("westus", osSettings.getPublisher(), osSettings.getOffer(), osSettings.getSku(), null, 1, "name"); } else { imagesOps.get("westus", osSettings.getPublisher(), osSettings.getOffer(), osSettings.getSku(), version); } } catch (Exception e) { String message = CloudException.class.isInstance(e) ? CloudException.class.cast(e).getBody().getMessage() : e.getMessage(); p.addProblem(Problem.Severity.WARNING, "Error getting image '" + n.getNodeName() + "' in region 'westus': " + message) .setRemediation("If you are not targeting 'westus' and know the image is available in other regions, you can ignore this warning and select a different region when baking images. See available images here: https://aka.ms/azspinimage"); } } }
@Override protected BaseImage buildBaseImage(String baseImageId) { AzureBaseImage.AzureOperatingSystemSettings imageSettings = (new AzureBaseImage.AzureOperatingSystemSettings()) .setPublisher(publisher) .setOffer(offer) .setSku(sku) .setVersion(isSet(version) ? version : "latest"); return (new AzureBaseImage()).setBaseImage(imageSettings); } }
@Override public void validate(ConfigProblemSetBuilder p, AzureProvider n) { List<AzureCredentials> credentialsList = new ArrayList<>(); AzureAccountValidator azureAccountValidator = new AzureAccountValidator(credentialsList, halyardVersion); n.getAccounts().forEach(account -> azureAccountValidator.validate(p, account)); new AzureBakeryDefaultsValidator(credentialsList).validate(p, n.getBakeryDefaults()); } }
@Override public void validate(ConfigProblemSetBuilder p, AzureBakeryDefaults n) { List<AzureBaseImage> baseImages = n.getBaseImages(); AzureBaseImageValidator baseImageValidator = new AzureBaseImageValidator(credentialsList); baseImages.forEach(baseImage -> baseImageValidator.validate(p, baseImage)); } }
@Override protected Account editAccount(AzureAccount account) { account.setClientId(isSet(clientId) ? clientId : account.getClientId()); account.setAppKey(isSet(appKey) ? appKey : account.getAppKey()); account.setTenantId(isSet(tenantId) ? tenantId : account.getTenantId()); account.setSubscriptionId(isSet(subscriptionId) ? subscriptionId : account.getSubscriptionId()); account.setObjectId(isSet(objectId) ? objectId : account.getObjectId()); account.setDefaultResourceGroup(isSet(defaultResourceGroup) ? defaultResourceGroup : account.getDefaultResourceGroup()); account.setDefaultKeyVault(isSet(defaultKeyVault) ? defaultKeyVault : account.getDefaultKeyVault()); account.setPackerResourceGroup(isSet(packerResourceGroup) ? packerResourceGroup : account.getPackerResourceGroup()); account.setPackerStorageAccount(isSet(packerStorageAccount) ? packerStorageAccount : account.getPackerStorageAccount()); try { account.setRegions(regions); } catch (IllegalArgumentException e) { throw new IllegalArgumentException("Set --regions"); } return account; } }
@Override protected BaseImage editBaseImage(AzureBaseImage baseImage) { AzureBaseImage.AzureOperatingSystemSettings imageSettings = baseImage.getBaseImage(); imageSettings = imageSettings != null ? imageSettings : new AzureBaseImage.AzureOperatingSystemSettings(); imageSettings.setPublisher(isSet(publisher) ? publisher : imageSettings.getPublisher()); imageSettings.setOffer(isSet(offer) ? offer : imageSettings.getOffer()); imageSettings.setSku(isSet(sku) ? sku : imageSettings.getSku()); imageSettings.setVersion(isSet(version) ? version : imageSettings.getVersion()); baseImage.setBaseImage(imageSettings); return baseImage; } }
@Override public void validate(ConfigProblemSetBuilder p, AzureAccount n) { String clientId = n.getClientId(); String appKey = n.getAppKey(); String tenantId = n.getTenantId(); String subscriptionId = n.getSubscriptionId(); String defaultResourceGroup = n.getDefaultResourceGroup(); String defaultKeyVault = n.getDefaultKeyVault(); String packerResourceGroup = n.getPackerResourceGroup(); String packerStorageAccount = n.getPackerStorageAccount();
@Override protected Account buildAccount(String accountName) { return ((AzureAccount) new AzureAccount().setName(accountName)) .setClientId(clientId) .setAppKey(appKey) .setTenantId(tenantId) .setSubscriptionId(subscriptionId) .setObjectId(objectId) .setDefaultResourceGroup(defaultResourceGroup) .setDefaultKeyVault(defaultKeyVault) .setPackerResourceGroup(packerResourceGroup) .setPackerStorageAccount(packerStorageAccount) .setRegions(regions); }
@Override public void validate(ConfigProblemSetBuilder p, AzureBaseImage n) { AzureCredentials credentials = credentialsList.get(0); // The first credentials should be fine since we're validating against public images VirtualMachineImagesOperations imagesOps = credentials.getComputeClient().getVmImageOps(); AzureBaseImage.AzureOperatingSystemSettings osSettings = n.getBaseImage(); String version = osSettings.getVersion(); try { if (version != null && version.equals("latest")) { imagesOps.list("westus", osSettings.getPublisher(), osSettings.getOffer(), osSettings.getSku(), null, 1, "name"); } else { imagesOps.get("westus", osSettings.getPublisher(), osSettings.getOffer(), osSettings.getSku(), version); } } catch (Exception e) { String message = CloudException.class.isInstance(e) ? CloudException.class.cast(e).getBody().getMessage() : e.getMessage(); p.addProblem(Problem.Severity.WARNING, "Error getting image '" + n.getNodeName() + "' in region 'westus': " + message) .setRemediation("If you are not targeting 'westus' and know the image is available in other regions, you can ignore this warning and select a different region when baking images. See available images here: https://aka.ms/azspinimage"); } } }
@Override protected BaseImage buildBaseImage(String baseImageId) { AzureBaseImage.AzureOperatingSystemSettings imageSettings = (new AzureBaseImage.AzureOperatingSystemSettings()) .setPublisher(publisher) .setOffer(offer) .setSku(sku) .setVersion(isSet(version) ? version : "latest"); return (new AzureBaseImage()).setBaseImage(imageSettings); } }
@Override public AzureBakeryDefaults emptyBakeryDefaults() { AzureBakeryDefaults result = new AzureBakeryDefaults(); result.setTemplateFile("azure-linux.json"); return result; } }
@Override public void validate(ConfigProblemSetBuilder p, AzureProvider n) { List<AzureCredentials> credentialsList = new ArrayList<>(); AzureAccountValidator azureAccountValidator = new AzureAccountValidator(credentialsList, halyardVersion); n.getAccounts().forEach(account -> azureAccountValidator.validate(p, account)); new AzureBakeryDefaultsValidator(credentialsList).validate(p, n.getBakeryDefaults()); } }
@Override protected Account emptyAccount() { return new AzureAccount(); } }
@Override public void validate(ConfigProblemSetBuilder p, AzureBakeryDefaults n) { List<AzureBaseImage> baseImages = n.getBaseImages(); AzureBaseImageValidator baseImageValidator = new AzureBaseImageValidator(credentialsList); baseImages.forEach(baseImage -> baseImageValidator.validate(p, baseImage)); } }