Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add MACHINE_TYPE to template parameter type #1544

Closed
wants to merge 4 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -667,6 +667,44 @@ public final class TemplateParameter {
boolean hiddenUi() default false;
}

/**
* Template Parameter containing machine type. See
* https://cloud.google.com/compute/docs/machine-types for a list of valid options.
*/
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.METHOD})
public @interface MachineType {
/** Order of appearance. */
int order() default 999;

/** Name of the parameter. */
String name() default "";

/** Group Name of the parameter. */
String groupName() default "";

/** Parent Name of the parameter. */
String parentName() default "";

/** List of parent trigger values. */
String[] parentTriggerValues() default "";

/** If parameter is optional. */
boolean optional() default false;

/** Description of the parameter. */
String description();

/** Help text of the parameter. */
String helpText();

/** Example of the parameter. */
String example() default "";

/** Parameter visibility in the UI. */
boolean hiddenUi() default false;
}

/** Template Parameter containing a date/time input. */
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.METHOD})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ public final class MetadataUtils {
TemplateParameter.Integer.class,
TemplateParameter.KafkaTopic.class,
TemplateParameter.KmsEncryptionKey.class,
TemplateParameter.MachineType.class,
TemplateParameter.Long.class,
TemplateParameter.Password.class,
TemplateParameter.ProjectId.class,
Expand Down Expand Up @@ -209,6 +210,10 @@ public static List<String> getRegexes(Annotation parameterAnnotation) {
+ "\\/]+\\/cryptoKeys\\/[^\\n"
+ "\\r"
+ "\\/]+$");
case "MachineType":
TemplateParameter.MachineType machineTypeParam =
(TemplateParameter.MachineType) parameterAnnotation;
return List.of("^[a-z0-9]+(-[a-z0-9]+)+$");
case "Duration":
TemplateParameter.Duration durationParam = (TemplateParameter.Duration) parameterAnnotation;
return List.of("^[1-9][0-9]*[s|m|h]$");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -469,6 +469,23 @@ public void processParamType(Annotation parameterAnnotation) {
this.setHiddenUi(kmsEncryptionKeyParam.hiddenUi());
this.setParamType(ImageSpecParameterType.TEXT);
break;
case "MachineType":
TemplateParameter.MachineType machineTypeParam =
(TemplateParameter.MachineType) parameterAnnotation;
if (!machineTypeParam.name().isEmpty()) {
this.setName(machineTypeParam.name());
}
processDescriptions(
machineTypeParam.groupName(),
machineTypeParam.description(),
machineTypeParam.helpText(),
machineTypeParam.example());
this.setParentName(machineTypeParam.parentName());
this.setParentTriggerValues(machineTypeParam.parentTriggerValues());
this.setOptional(machineTypeParam.optional());
this.setHiddenUi(machineTypeParam.hiddenUi());
this.setParamType(ImageSpecParameterType.MACHINE_TYPE);
break;
case "Duration":
TemplateParameter.Duration durationParam = (TemplateParameter.Duration) parameterAnnotation;
if (!durationParam.name().isEmpty()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,9 @@ public enum ImageSpecParameterType {
/** Pub/Sub Topic to read or write. */
PUBSUB_TOPIC,

/** Machine Type parameter. */
MACHINE_TYPE,

/** Boolean parameter. */
BOOLEAN,

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,9 @@ public void testSampleAtoBOk() {
assertEquals(ImageSpecParameterType.BOOLEAN, logical.getParamType());
assertEquals("^(true|false)$", logical.getRegexes().get(0));

ImageSpecParameter machineType = metadata.getParameter("machineType").get();
assertEquals(ImageSpecParameterType.MACHINE_TYPE, machineType.getParamType());

ImageSpecParameter json = metadata.getParameter("JSON").get();
assertEquals(ImageSpecParameterType.BOOLEAN, json.getParamType());

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,15 +98,22 @@ public interface AtoBOptions {
@Default.Boolean(false)
Boolean getParamWithGroupName();

@TemplateParameter.Text(
@TemplateParameter.Boolean(
order = 9,
parentName = "paramWithGroupName",
parentTriggerValues = {"true"},
description = "N/A",
helpText = "Text that has parent name and parent trigger value")
helpText = "Boolean that has parent name and parent trigger value")
@Default.Boolean(false)
Boolean getParamWithParentName();

@TemplateParameter.MachineType(
order = 15,
description = "N/A",
helpText = "String that is machine type")
@Default.String("")
String getMachineType();

@TemplateParameter.KafkaTopic(
order = 10,
description = "Kafka input topic",
Expand Down