Skip to content
This repository was archived by the owner on Aug 3, 2022. It is now read-only.

Commit 1e007b1

Browse files
Jeremy Manessmtraynham
authored andcommitted
Adds QoS Policy Support
- Add QoS Policy ID to port - Add support for managing QoS policies - Add rule type property
1 parent 44c7ae1 commit 1e007b1

21 files changed

+1081
-3
lines changed

core/src/main/java/org/openstack4j/api/networking/NetworkingService.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,4 +83,10 @@ public interface NetworkingService extends RestService {
8383
* @return the Availability Zone Service API
8484
*/
8585
AvailabilityZoneService availabilityzone();
86+
87+
/**
88+
*
89+
* @return QoS Policy Service API
90+
*/
91+
QoSPolicyService qosPolicies();
8692
}
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package org.openstack4j.api.networking;
2+
3+
import org.openstack4j.common.RestService;
4+
import org.openstack4j.model.common.ActionResponse;
5+
import org.openstack4j.model.network.QoSPolicy;
6+
import org.openstack4j.model.network.options.QoSPolicyListOptions;
7+
8+
import java.util.List;
9+
10+
public interface QoSPolicyService extends RestService {
11+
12+
/**
13+
* Lists all QoS policies authorized by the current Tenant
14+
*
15+
* @return the list of QoS policies
16+
*/
17+
List<? extends QoSPolicy> list();
18+
19+
/**
20+
* Lists all QoS policies authorized by the current Tenant
21+
*
22+
* @param options filtering options
23+
* @return the list of QoS policies
24+
*/
25+
List<? extends QoSPolicy> list(QoSPolicyListOptions options);
26+
27+
/**
28+
* Gets the QoS policy by ID
29+
*
30+
* @param policyId the QoS QoSPolicy identifier
31+
* @return the QoSPolicy or null if not found
32+
*/
33+
QoSPolicy get(String policyId);
34+
35+
/**
36+
* Delete a QoSPolicy by ID
37+
*
38+
* @param policyId the policy identifier to delete
39+
* @return the action response
40+
*/
41+
ActionResponse delete(String policyId);
42+
43+
/**
44+
* Creates a new QoSPolicy
45+
* @param policy the QoSPolicy to create
46+
* @return the newly create QoSPolicy
47+
*/
48+
QoSPolicy create(QoSPolicy policy);
49+
50+
/**
51+
* Updates an existing QoSPolicy. The QoSPolicy identifier must be set on the policy object to be successful
52+
* @param policy the QoSPolicy to update
53+
* @return the updated QoSPolicy
54+
*/
55+
QoSPolicy update(QoSPolicy policy);
56+
}

core/src/main/java/org/openstack4j/model/network/Port.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,4 +71,6 @@ public interface Port extends Resource, Buildable<PortBuilder> {
7171
String getvNicType();
7272

7373
Map<String, Object> getProfile();
74+
75+
String getQosPolicyId();
7476
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package org.openstack4j.model.network;
2+
3+
import org.openstack4j.common.Buildable;
4+
import org.openstack4j.model.common.Resource;
5+
import org.openstack4j.model.network.builder.BandwidthLimitRuleBuilder;
6+
import org.openstack4j.model.network.builder.DscpMarkingRuleBuilder;
7+
import org.openstack4j.model.network.builder.MinimumBandwidthRuleBuilder;
8+
import org.openstack4j.model.network.builder.QoSPolicyBuilder;
9+
10+
import java.util.List;
11+
import java.util.Set;
12+
13+
public interface QoSPolicy extends Resource, Buildable<QoSPolicyBuilder> {
14+
String getDescription();
15+
String getProjectId();
16+
int getRevisionNumber();
17+
boolean isShared();
18+
List<? extends Rule> getRules();
19+
boolean isDefault();
20+
String getCreatedAt();
21+
String getUpdatedAt();
22+
23+
interface Rule extends Resource {
24+
String getType();
25+
Set<String> getTags();
26+
}
27+
28+
interface BandwidthLimitRule extends Rule, Buildable<BandwidthLimitRuleBuilder> {
29+
Integer getMaxKbps();
30+
Integer getMaxBurstKbps();
31+
String getDirection();
32+
}
33+
34+
interface DscpMarkingRule extends Rule, Buildable<DscpMarkingRuleBuilder> {
35+
Integer getDscpMark();
36+
}
37+
38+
interface MinimumBandwidthRule extends Rule, Buildable<MinimumBandwidthRuleBuilder> {
39+
Integer getMinKbps();
40+
String getDirection();
41+
}
42+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package org.openstack4j.model.network.builder;
2+
3+
import org.openstack4j.common.Buildable.Builder;
4+
import org.openstack4j.model.network.QoSPolicy;
5+
6+
public interface BandwidthLimitRuleBuilder extends Builder<BandwidthLimitRuleBuilder, QoSPolicy.BandwidthLimitRule> {
7+
BandwidthLimitRuleBuilder maxKbps(Integer maxKbps);
8+
BandwidthLimitRuleBuilder maxBurstKbps(Integer maxBurstKbps);
9+
BandwidthLimitRuleBuilder direction(String direction);
10+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package org.openstack4j.model.network.builder;
2+
3+
import org.openstack4j.common.Buildable.Builder;
4+
import org.openstack4j.model.network.QoSPolicy.DscpMarkingRule;
5+
6+
import java.util.Set;
7+
8+
public interface DscpMarkingRuleBuilder extends Builder<DscpMarkingRuleBuilder, DscpMarkingRule> {
9+
DscpMarkingRuleBuilder dscpMark(Integer dscpMark);
10+
DscpMarkingRuleBuilder id(String id);
11+
DscpMarkingRuleBuilder tags(Set<String> tags);
12+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package org.openstack4j.model.network.builder;
2+
3+
import org.openstack4j.common.Buildable.Builder;
4+
import org.openstack4j.model.network.QoSPolicy.MinimumBandwidthRule;
5+
6+
import java.util.Set;
7+
8+
public interface MinimumBandwidthRuleBuilder extends Builder<MinimumBandwidthRuleBuilder, MinimumBandwidthRule> {
9+
MinimumBandwidthRuleBuilder minKbps(Integer minKbps);
10+
MinimumBandwidthRuleBuilder id(String id);
11+
MinimumBandwidthRuleBuilder direction(String direction);
12+
MinimumBandwidthRuleBuilder tags(Set<String> tags);
13+
}

core/src/main/java/org/openstack4j/model/network/builder/NetworkBuilders.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,4 +252,13 @@ public interface NetworkBuilders {
252252
* @return HealthMonitorV2UpdateBuilder
253253
*/
254254
public HealthMonitorV2UpdateBuilder healthMonitorV2Update();
255+
256+
QoSPolicyBuilder qosPolicy();
257+
258+
BandwidthLimitRuleBuilder bandwidthLimitRule();
259+
260+
DscpMarkingRuleBuilder dscpMarkingRule();
261+
262+
MinimumBandwidthRuleBuilder minimumBandwidthRule();
263+
255264
}

core/src/main/java/org/openstack4j/model/network/builder/PortBuilder.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,5 +116,6 @@ public interface PortBuilder extends Builder<PortBuilder, Port> {
116116

117117
PortBuilder profile(Map<String, Object> profile);
118118

119+
PortBuilder qosPolicyId(String qosPolicyId);
119120

120121
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package org.openstack4j.model.network.builder;
2+
3+
import org.openstack4j.common.Buildable.Builder;
4+
import org.openstack4j.model.network.QoSPolicy;
5+
import org.openstack4j.model.network.QoSPolicy.Rule;
6+
7+
import java.util.List;
8+
9+
public interface QoSPolicyBuilder extends Builder<QoSPolicyBuilder, QoSPolicy> {
10+
QoSPolicyBuilder description(String description);
11+
QoSPolicyBuilder tenantId(String tenantId);
12+
QoSPolicyBuilder projectId(String projectId);
13+
QoSPolicyBuilder revisionNumber(int revisionNumber);
14+
QoSPolicyBuilder shared(boolean shared);
15+
QoSPolicyBuilder rules(List<? extends Rule> rules);
16+
QoSPolicyBuilder id(String id);
17+
QoSPolicyBuilder isDefault(boolean isDefault);
18+
QoSPolicyBuilder name(String name);
19+
QoSPolicyBuilder createdAt(String createdAt);
20+
QoSPolicyBuilder updatedAt(String updatedAt);
21+
}

0 commit comments

Comments
 (0)