Skip to content

Commit ecbe9b1

Browse files
committed
Merge pull request #287 from e3ky/master
Added create and delete ceilometer alarms functionality
2 parents 6759db9 + 472a150 commit ecbe9b1

File tree

6 files changed

+310
-9
lines changed

6 files changed

+310
-9
lines changed

core/src/main/java/org/openstack4j/api/Builders.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
import org.openstack4j.model.sahara.builder.ServiceConfigBuilder;
5050
import org.openstack4j.model.storage.block.builder.VolumeBuilder;
5151
import org.openstack4j.model.storage.block.builder.VolumeSnapshotBuilder;
52+
import org.openstack4j.model.telemetry.builder.AlarmBuilder;
5253
import org.openstack4j.openstack.common.GenericLink;
5354
import org.openstack4j.openstack.compute.domain.NovaBlockDeviceMappingCreate;
5455
import org.openstack4j.openstack.compute.domain.NovaFlavor;
@@ -94,6 +95,7 @@
9495
import org.openstack4j.openstack.sahara.domain.SaharaServiceConfig;
9596
import org.openstack4j.openstack.storage.block.domain.CinderVolume;
9697
import org.openstack4j.openstack.storage.block.domain.CinderVolumeSnapshot;
98+
import org.openstack4j.openstack.telemetry.domain.CeilometerAlarm;
9799

98100
/**
99101
* A utility class to quickly access available Builders within the OpenStack API
@@ -464,5 +466,13 @@ public static ServiceConfigBuilder serviceConfig() {
464466
public static QuotaSetUpdateBuilder quotaSet() {
465467
return NovaQuotaSetUpdate.builder();
466468
}
469+
470+
/**
471+
* The builder to create an Alarm
472+
* @return the image builder
473+
*/
474+
public static AlarmBuilder alarm() {
475+
return CeilometerAlarm.builder();
476+
}
467477

468478
}

core/src/main/java/org/openstack4j/api/telemetry/AlarmService.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.util.List;
44

55
import org.openstack4j.common.RestService;
6+
import org.openstack4j.model.compute.ActionResponse;
67
import org.openstack4j.model.telemetry.Alarm;
78

89
/**
@@ -32,5 +33,15 @@ public interface AlarmService extends RestService {
3233
*/
3334
void update(String id, Alarm a);
3435

35-
36+
/**
37+
* Create an alarm
38+
*
39+
*/
40+
Alarm create(Alarm alarm);
41+
42+
/**
43+
* Delete a specified alarm
44+
*
45+
*/
46+
ActionResponse delete(String id);
3647
}

core/src/main/java/org/openstack4j/model/telemetry/Alarm.java

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,12 @@
22

33
import java.util.List;
44

5+
import org.openstack4j.common.Buildable;
56
import org.openstack4j.model.ModelEntity;
7+
import org.openstack4j.model.common.BasicResource;
8+
import org.openstack4j.model.telemetry.builder.AlarmBuilder;
9+
import org.openstack4j.openstack.telemetry.domain.CeilometerAlarm.CeilometerQuery;
10+
import org.openstack4j.openstack.telemetry.domain.CeilometerAlarm.CeilometerThresholdRule;
611

712
import com.fasterxml.jackson.annotation.JsonCreator;
813
import com.fasterxml.jackson.annotation.JsonValue;
@@ -12,7 +17,7 @@
1217
*
1318
* @author Massimiliano Romano
1419
*/
15-
public interface Alarm extends ModelEntity {
20+
public interface Alarm extends ModelEntity,BasicResource, Buildable<AlarmBuilder> {
1621

1722
List<String> getAlarmActions();
1823

@@ -94,6 +99,14 @@ public interface ThresholdRule{
9499
ComparisonOperator getComparisonOperator();
95100
boolean getExcludeOutliers();
96101

102+
void setMeterName(String meterName);
103+
void setEvaluationPeriods(int evaluationPeriod);
104+
void setStatistic(Statistic statistic);
105+
void setPeriod(int period);
106+
void setThreshold(float threshold);
107+
void setQuery(List<CeilometerQuery> query);
108+
void setComparisonOperator(ComparisonOperator comparisonOperator);
109+
void setExcludeOutliers(boolean excludeOutliers);
97110

98111

99112
public enum Statistic {
@@ -146,6 +159,27 @@ public interface Query{
146159
String getField();
147160
String getValue();
148161
ComparisonOperator getOp();
162+
void setField(String field);
163+
void setValue(String value);
164+
void setOp(ComparisonOperator comparisonOperator);
149165
}
150166
}
151-
}
167+
168+
void setName(String name);
169+
170+
void setType(Type type);
171+
172+
void setUserId(String userId);
173+
174+
void setAlarmActions(List<String> alarmActions);
175+
176+
void setDescription(String description);
177+
178+
void setInsufficientDataActions(List<String> insufficientDataActions);
179+
180+
void setOkActions(List<String> okActions);
181+
182+
void setRepeateActions(Boolean repeatActions);
183+
184+
void setThresholdRule(CeilometerThresholdRule tr);
185+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package org.openstack4j.model.telemetry.builder;
2+
3+
import java.util.List;
4+
5+
import org.openstack4j.common.Buildable.Builder;
6+
import org.openstack4j.model.telemetry.Alarm;
7+
import org.openstack4j.model.telemetry.Alarm.Type;
8+
import org.openstack4j.openstack.telemetry.domain.CeilometerAlarm.CeilometerThresholdRule;
9+
10+
/**
11+
* An alarm builder
12+
*
13+
* @author Martin Belperchinov
14+
*/
15+
16+
public interface AlarmBuilder extends Builder<AlarmBuilder, Alarm>{
17+
18+
AlarmBuilder name(String name);
19+
20+
AlarmBuilder okActions(List<String> okActions);
21+
22+
AlarmBuilder alarmActions(List<String> alarmActions);
23+
24+
AlarmBuilder type(Type type);
25+
26+
AlarmBuilder thresholeRule(CeilometerThresholdRule te);
27+
28+
AlarmBuilder repeatActions(boolean repeatActions);
29+
30+
AlarmBuilder description(String description);
31+
32+
}

core/src/main/java/org/openstack4j/openstack/telemetry/domain/CeilometerAlarm.java

Lines changed: 201 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@
22

33
import java.util.List;
44

5+
import org.openstack4j.model.common.builder.BasicResourceBuilder;
56
import org.openstack4j.model.telemetry.Alarm;
67
import org.openstack4j.model.telemetry.Alarm.ThresholdRule.ComparisonOperator;
78
import org.openstack4j.model.telemetry.Alarm.ThresholdRule.Query;
9+
import org.openstack4j.model.telemetry.builder.AlarmBuilder;
810

911
import com.fasterxml.jackson.annotation.JsonProperty;
1012
import com.google.common.base.Objects;
@@ -84,7 +86,6 @@ public class CeilometerAlarm implements Alarm {
8486
@JsonProperty("timestamp")
8587
private String timestamp;
8688

87-
8889
/**
8990
* {@inheritDoc}
9091
*/
@@ -112,11 +113,11 @@ public Type getType() {
112113
/**
113114
* {@inheritDoc}
114115
*/
115-
@Override
116-
public String getUserId() {
117-
return userId;
118-
}
119-
116+
@Override
117+
public String getUserId() {
118+
return userId;
119+
}
120+
120121
/**
121122
* {@inheritDoc}
122123
*/
@@ -271,6 +272,45 @@ public boolean getExcludeOutliers() {
271272
return excludeOutliers;
272273
}
273274

275+
@Override
276+
public void setMeterName(String meterName) {
277+
this.meterName = meterName;
278+
}
279+
280+
@Override
281+
public void setEvaluationPeriods(int evaluationPeriod) {
282+
this.evaluationPeriods = evaluationPeriod;
283+
}
284+
285+
@Override
286+
public void setStatistic(Statistic statistic) {
287+
this.statistic = statistic;
288+
}
289+
290+
@Override
291+
public void setPeriod(int period) {
292+
this.period = period;
293+
}
294+
295+
@Override
296+
public void setThreshold(float threshold) {
297+
this.threshold = threshold;
298+
}
299+
300+
@Override
301+
public void setQuery(List<CeilometerQuery> query) {
302+
this.query = query;
303+
}
304+
305+
@Override
306+
public void setComparisonOperator(ComparisonOperator comparisonOperator) {
307+
this.comparisonOperator = comparisonOperator;
308+
}
309+
310+
@Override
311+
public void setExcludeOutliers(boolean excludeOutliers) {
312+
this.excludeOutliers = excludeOutliers;
313+
}
274314
}
275315

276316
public static class CeilometerQuery implements Query{
@@ -299,5 +339,160 @@ public String getValue() {
299339
public ComparisonOperator getOp() {
300340
return op;
301341
}
342+
343+
@Override
344+
public void setField(String field) {
345+
this.field = field;
346+
}
347+
348+
@Override
349+
public void setValue(String value) {
350+
this.value = value;
351+
}
352+
353+
@Override
354+
public void setOp(ComparisonOperator comparisonOperator) {
355+
this.op = comparisonOperator;
356+
}
357+
}
358+
359+
public static AlarmBuilder builder() {
360+
return new AlarmConcreteBuilder();
302361
}
362+
363+
/**
364+
* {@inheritDoc}
365+
*/
366+
@Override
367+
public void setName(String name) {
368+
this.name = name;
369+
}
370+
371+
/**
372+
* {@inheritDoc}
373+
*/
374+
@Override
375+
public void setType(Type type) {
376+
this.type = type;
377+
}
378+
379+
@Override
380+
public void setUserId(String userId) {
381+
this.userId = userId;
382+
}
383+
384+
@Override
385+
public void setAlarmActions(List<String> alarmActions) {
386+
this.alarmActions = alarmActions;
387+
388+
}
389+
390+
@Override
391+
public void setDescription(String description) {
392+
this.description = description;
393+
}
394+
395+
@Override
396+
public void setInsufficientDataActions(List<String> insufficientDataActions) {
397+
this.insufficientDataActions = insufficientDataActions;
398+
}
399+
400+
@Override
401+
public void setOkActions(List<String> okActions) {
402+
this.okActions = okActions;
403+
}
404+
405+
@Override
406+
public void setRepeateActions(Boolean repeatActions) {
407+
this.repeatActions = repeatActions;
408+
}
409+
410+
@Override
411+
public String getId() {
412+
return this.alarmId;
413+
}
414+
415+
416+
@Override
417+
public void setId(String id) {
418+
this.alarmId = id;
419+
}
420+
421+
@Override
422+
public void setThresholdRule(CeilometerThresholdRule tr) {
423+
this.thresholdRule = (CeilometerThresholdRule) tr;
424+
}
425+
426+
@Override
427+
public AlarmBuilder toBuilder() {
428+
// TODO Auto-generated method stub
429+
return null;
430+
}
431+
432+
public static class AlarmConcreteBuilder extends BasicResourceBuilder<Alarm, AlarmConcreteBuilder> implements AlarmBuilder {
433+
434+
private CeilometerAlarm m;
435+
436+
AlarmConcreteBuilder() {
437+
this(new CeilometerAlarm());
438+
}
439+
440+
AlarmConcreteBuilder(CeilometerAlarm m) {
441+
this.m = m;
442+
}
443+
444+
445+
@Override
446+
public Alarm build() {
447+
return m;
448+
}
449+
450+
@Override
451+
public AlarmBuilder from(Alarm in) {
452+
this.m = (CeilometerAlarm) in;
453+
return this;
454+
}
455+
456+
@Override
457+
public AlarmBuilder okActions(List<String> okActions) {
458+
this.m.okActions = okActions;
459+
return this;
460+
}
461+
462+
@Override
463+
protected Alarm reference() {
464+
return m;
465+
}
466+
467+
@Override
468+
public AlarmBuilder type(Type type) {
469+
this.m.type = type;
470+
return this;
471+
}
472+
473+
@Override
474+
public AlarmBuilder thresholeRule(CeilometerThresholdRule tr) {
475+
this.m.thresholdRule = tr;
476+
return this;
477+
}
478+
479+
@Override
480+
public AlarmBuilder repeatActions(boolean repeatActions) {
481+
m.repeatActions = repeatActions;
482+
return this;
483+
}
484+
485+
@Override
486+
public AlarmBuilder description(String description) {
487+
m.description = description;
488+
return this;
489+
}
490+
491+
@Override
492+
public AlarmBuilder alarmActions(List<String> alarmActions) {
493+
this.m.alarmActions = alarmActions;
494+
return this;
495+
}
496+
497+
}
303498
}

0 commit comments

Comments
 (0)