Skip to content

Commit d935d38

Browse files
committed
tuna
1 parent 4e914b7 commit d935d38

29 files changed

Lines changed: 1286 additions & 326 deletions

File tree

api/src/com/cloud/network/Network.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,8 +126,8 @@ public static class Provider {
126126
public static final Provider NiciraNvp = new Provider("NiciraNvp", false);
127127
public static final Provider InternalLbVm = new Provider("InternalLbVm", false);
128128
public static final Provider CiscoVnmc = new Provider("CiscoVnmc", true);
129-
// Ovs
130-
public static final Provider Ovs = new Provider("Ovs", false);
129+
// add new Ovs provider
130+
public static final Provider Ovs = new Provider("Ovs", false);
131131

132132
private final String name;
133133
private final boolean isExternal;
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.cloud.network;
2+
3+
import org.apache.cloudstack.api.Identity;
4+
import org.apache.cloudstack.api.InternalIdentity;
5+
6+
public interface OvsProvider extends InternalIdentity, Identity {
7+
public boolean isEnabled();
8+
9+
public long getNspId();
10+
}

api/src/com/cloud/network/element/VirtualRouterElementService.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,19 +18,25 @@
1818

1919
import java.util.List;
2020

21+
import org.apache.cloudstack.api.command.admin.router.ConfigureOvsElementCmd;
2122
import org.apache.cloudstack.api.command.admin.router.ConfigureVirtualRouterElementCmd;
23+
import org.apache.cloudstack.api.command.admin.router.ListOvsElementsCmd;
2224
import org.apache.cloudstack.api.command.admin.router.ListVirtualRouterElementsCmd;
2325

26+
import com.cloud.network.OvsProvider;
2427
import com.cloud.network.VirtualRouterProvider;
2528
import com.cloud.network.VirtualRouterProvider.Type;
2629
import com.cloud.utils.component.PluggableService;
2730

2831
public interface VirtualRouterElementService extends PluggableService {
2932
VirtualRouterProvider configure(ConfigureVirtualRouterElementCmd cmd);
3033

34+
OvsProvider configure(ConfigureOvsElementCmd cmd);
3135
VirtualRouterProvider addElement(Long nspId, Type providerType);
3236

3337
VirtualRouterProvider getCreatedElement(long id);
3438

3539
List<? extends VirtualRouterProvider> searchForVirtualRouterElement(ListVirtualRouterElementsCmd cmd);
40+
41+
List<? extends OvsProvider> searchForOvsElement(ListOvsElementsCmd cmd);
3642
}

api/src/org/apache/cloudstack/api/ResponseGenerator.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@
6767
import org.apache.cloudstack.api.response.NetworkResponse;
6868
import org.apache.cloudstack.api.response.NicResponse;
6969
import org.apache.cloudstack.api.response.NicSecondaryIpResponse;
70+
import org.apache.cloudstack.api.response.OvsProviderResponse;
7071
import org.apache.cloudstack.api.response.PhysicalNetworkResponse;
7172
import org.apache.cloudstack.api.response.PodResponse;
7273
import org.apache.cloudstack.api.response.PortableIpRangeResponse;
@@ -118,7 +119,9 @@
118119
import org.apache.cloudstack.region.Region;
119120
import org.apache.cloudstack.usage.Usage;
120121

122+
import com.cloud.async.AsyncJob;
121123
import com.cloud.capacity.Capacity;
124+
import com.cloud.configuration.Configuration;
122125
import com.cloud.configuration.ResourceCount;
123126
import com.cloud.configuration.ResourceLimit;
124127
import com.cloud.dc.DataCenter;
@@ -134,6 +137,7 @@
134137
import com.cloud.network.Network;
135138
import com.cloud.network.Network.Service;
136139
import com.cloud.network.Networks.IsolationType;
140+
import com.cloud.network.OvsProvider;
137141
import com.cloud.network.PhysicalNetwork;
138142
import com.cloud.network.PhysicalNetworkServiceProvider;
139143
import com.cloud.network.PhysicalNetworkTrafficType;
@@ -353,6 +357,10 @@ public interface ResponseGenerator {
353357

354358
VirtualRouterProviderResponse createVirtualRouterProviderResponse(VirtualRouterProvider result);
355359

360+
OvsProviderResponse createOvsProviderResponse(OvsProvider result);
361+
362+
LDAPConfigResponse createLDAPConfigResponse(String hostname, Integer port, Boolean useSSL, String queryFilter, String baseSearch, String dn);
363+
356364
StorageNetworkIpRangeResponse createStorageNetworkIpRangeResponse(StorageNetworkIpRange result);
357365

358366
RegionResponse createRegionResponse(Region region);
Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
package org.apache.cloudstack.api.command.admin.router;
2+
3+
import java.util.List;
4+
5+
import javax.inject.Inject;
6+
7+
import org.apache.cloudstack.api.APICommand;
8+
import org.apache.cloudstack.api.ApiCommandJobType;
9+
import org.apache.cloudstack.api.ApiConstants;
10+
import org.apache.cloudstack.api.ApiErrorCode;
11+
import org.apache.cloudstack.api.BaseAsyncCmd;
12+
import org.apache.cloudstack.api.Parameter;
13+
import org.apache.cloudstack.api.ServerApiException;
14+
import org.apache.cloudstack.api.response.OvsProviderResponse;
15+
import org.apache.log4j.Logger;
16+
17+
import com.cloud.event.EventTypes;
18+
import com.cloud.exception.ConcurrentOperationException;
19+
import com.cloud.exception.InsufficientCapacityException;
20+
import com.cloud.exception.ResourceUnavailableException;
21+
import com.cloud.network.OvsProvider;
22+
import com.cloud.network.element.VirtualRouterElementService;
23+
import com.cloud.user.Account;
24+
import com.cloud.user.UserContext;
25+
26+
@APICommand(name = "configureOvsElement", responseObject = OvsProviderResponse.class, description = "Configures an ovs element.")
27+
public class ConfigureOvsElementCmd extends BaseAsyncCmd {
28+
public static final Logger s_logger = Logger
29+
.getLogger(ConfigureOvsElementCmd.class.getName());
30+
private static final String s_name = "configureovselementresponse";
31+
@Inject
32+
private List<VirtualRouterElementService> _service;
33+
34+
// ///////////////////////////////////////////////////
35+
// ////////////// API parameters /////////////////////
36+
// ///////////////////////////////////////////////////
37+
38+
@Parameter(name = ApiConstants.ID, type = CommandType.UUID, entityType = OvsProviderResponse.class, required = true, description = "the ID of the ovs provider")
39+
private Long id;
40+
41+
@Parameter(name = ApiConstants.ENABLED, type = CommandType.BOOLEAN, required = true, description = "Enabled/Disabled the service provider")
42+
private Boolean enabled;
43+
44+
// ///////////////////////////////////////////////////
45+
// ///////////////// Accessors ///////////////////////
46+
// ///////////////////////////////////////////////////
47+
public void setId(Long id) {
48+
this.id = id;
49+
}
50+
51+
public Long getId() {
52+
return id;
53+
}
54+
55+
public void setEnabled(Boolean enabled) {
56+
this.enabled = enabled;
57+
}
58+
59+
public Boolean getEnabled() {
60+
return enabled;
61+
}
62+
63+
// ///////////////////////////////////////////////////
64+
// ///////////// API Implementation///////////////////
65+
// ///////////////////////////////////////////////////
66+
67+
@Override
68+
public String getCommandName() {
69+
return s_name;
70+
}
71+
72+
public static String getResultObjectName() {
73+
return "boolean";
74+
}
75+
76+
@Override
77+
public long getEntityOwnerId() {
78+
return Account.ACCOUNT_ID_SYSTEM;
79+
}
80+
81+
@Override
82+
public String getEventType() {
83+
return EventTypes.EVENT_NETWORK_ELEMENT_CONFIGURE;
84+
}
85+
86+
@Override
87+
public String getEventDescription() {
88+
return "configuring ovs provider: " + id;
89+
}
90+
91+
@Override
92+
public ApiCommandJobType getInstanceType() {
93+
return ApiCommandJobType.None;
94+
}
95+
96+
@Override
97+
public Long getInstanceId() {
98+
return id;
99+
}
100+
101+
@Override
102+
public void execute() throws ConcurrentOperationException,
103+
ResourceUnavailableException, InsufficientCapacityException {
104+
UserContext.current().setEventDetails("Ovs element: " + id);
105+
OvsProvider result = _service.get(0).configure(this);
106+
if (result != null) {
107+
OvsProviderResponse ovsResponse = _responseGenerator
108+
.createOvsProviderResponse(result);
109+
ovsResponse.setResponseName(getCommandName());
110+
this.setResponseObject(ovsResponse);
111+
} else {
112+
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR,
113+
"Failed to configure the ovs provider");
114+
}
115+
}
116+
}
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
package org.apache.cloudstack.api.command.admin.router;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
6+
import javax.inject.Inject;
7+
8+
import org.apache.cloudstack.api.APICommand;
9+
import org.apache.cloudstack.api.ApiConstants;
10+
import org.apache.cloudstack.api.BaseListCmd;
11+
import org.apache.cloudstack.api.Parameter;
12+
import org.apache.cloudstack.api.ServerApiException;
13+
import org.apache.cloudstack.api.command.user.network.ListNetworkOfferingsCmd;
14+
import org.apache.cloudstack.api.response.ListResponse;
15+
import org.apache.cloudstack.api.response.OvsProviderResponse;
16+
import org.apache.cloudstack.api.response.ProviderResponse;
17+
import org.apache.log4j.Logger;
18+
19+
import com.cloud.exception.ConcurrentOperationException;
20+
import com.cloud.exception.InsufficientCapacityException;
21+
import com.cloud.exception.ResourceAllocationException;
22+
import com.cloud.exception.ResourceUnavailableException;
23+
import com.cloud.network.OvsProvider;
24+
import com.cloud.network.element.VirtualRouterElementService;
25+
26+
@APICommand(name = "listOvsElements", description = "Lists all available ovs elements.", responseObject = OvsProviderResponse.class)
27+
public class ListOvsElementsCmd extends BaseListCmd {
28+
public static final Logger s_logger = Logger
29+
.getLogger(ListNetworkOfferingsCmd.class.getName());
30+
private static final String _name = "listovselementsresponse";
31+
@Inject
32+
private List<VirtualRouterElementService> _service;
33+
// ///////////////////////////////////////////////////
34+
// ////////////// API parameters /////////////////////
35+
// ///////////////////////////////////////////////////
36+
@Parameter(name = ApiConstants.ID, type = CommandType.UUID, entityType = OvsProviderResponse.class, description = "list ovs elements by id")
37+
private Long id;
38+
39+
@Parameter(name = ApiConstants.NSP_ID, type = CommandType.UUID, entityType = ProviderResponse.class, description = "list ovs elements by network service provider id")
40+
private Long nspId;
41+
42+
@Parameter(name = ApiConstants.ENABLED, type = CommandType.BOOLEAN, description = "list network offerings by enabled state")
43+
private Boolean enabled;
44+
45+
// ///////////////////////////////////////////////////
46+
// ///////////////// Accessors ///////////////////////
47+
// ///////////////////////////////////////////////////
48+
49+
public void setId(Long id) {
50+
this.id = id;
51+
}
52+
53+
public Long getId() {
54+
return id;
55+
}
56+
57+
public void setNspId(Long nspId) {
58+
this.nspId = nspId;
59+
}
60+
61+
public Long getNspId() {
62+
return nspId;
63+
}
64+
65+
public void setEnabled(Boolean enabled) {
66+
this.enabled = enabled;
67+
}
68+
69+
public Boolean getEnabled() {
70+
return enabled;
71+
}
72+
73+
@Override
74+
public String getCommandName() {
75+
return _name;
76+
}
77+
@Override
78+
public void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException, ConcurrentOperationException, ResourceAllocationException {
79+
List<? extends OvsProvider> providers = _service.get(0).searchForOvsElement(this);
80+
ListResponse<OvsProviderResponse> response = new ListResponse<OvsProviderResponse>();
81+
List<OvsProviderResponse> providerResponses = new ArrayList<OvsProviderResponse>();
82+
for (OvsProvider provider : providers) {
83+
OvsProviderResponse providerResponse = _responseGenerator.createOvsProviderResponse(provider);
84+
providerResponses.add(providerResponse);
85+
}
86+
response.setResponses(providerResponses);
87+
response.setResponseName(getCommandName());
88+
this.setResponseObject(response);
89+
90+
}
91+
}
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
package org.apache.cloudstack.api.response;
2+
3+
import org.apache.cloudstack.api.ApiConstants;
4+
import org.apache.cloudstack.api.BaseResponse;
5+
import org.apache.cloudstack.api.EntityReference;
6+
7+
import com.cloud.network.OvsProvider;
8+
import com.cloud.serializer.Param;
9+
import com.google.gson.annotations.SerializedName;
10+
11+
@EntityReference(value = OvsProvider.class)
12+
@SuppressWarnings("unused")
13+
public class OvsProviderResponse extends BaseResponse implements
14+
ControlledEntityResponse {
15+
@SerializedName(ApiConstants.ID)
16+
@Param(description = "the id of the ovs")
17+
private String id;
18+
@SerializedName(ApiConstants.NSP_ID)
19+
@Param(description = "the physical network service provider id of the provider")
20+
private String nspId;
21+
@SerializedName(ApiConstants.ENABLED)
22+
@Param(description = "Enabled/Disabled the service provider")
23+
private Boolean enabled;
24+
@SerializedName(ApiConstants.ACCOUNT)
25+
@Param(description = "the account associated with the provider")
26+
private String accountName;
27+
@SerializedName(ApiConstants.PROJECT_ID)
28+
@Param(description = "the project id of the ipaddress")
29+
private String projectId;
30+
@SerializedName(ApiConstants.PROJECT)
31+
@Param(description = "the project name of the address")
32+
private String projectName;
33+
@SerializedName(ApiConstants.DOMAIN_ID)
34+
@Param(description = "the domain ID associated with the provider")
35+
private String domainId;
36+
37+
@SerializedName(ApiConstants.DOMAIN)
38+
@Param(description = "the domain associated with the provider")
39+
private String domainName;
40+
41+
@Override
42+
public void setAccountName(String accountName) {
43+
this.accountName = accountName;
44+
}
45+
46+
public void setId(String id) {
47+
this.id = id;
48+
}
49+
50+
@Override
51+
public void setDomainId(String domainId) {
52+
this.domainId = domainId;
53+
}
54+
55+
@Override
56+
public void setDomainName(String domainName) {
57+
this.domainName = domainName;
58+
}
59+
60+
@Override
61+
public void setProjectId(String projectId) {
62+
this.projectId = projectId;
63+
}
64+
65+
@Override
66+
public void setProjectName(String projectName) {
67+
this.projectName = projectName;
68+
}
69+
70+
public void setNspId(String nspId) {
71+
this.nspId = nspId;
72+
}
73+
74+
public void setEnabled(Boolean enabled) {
75+
this.enabled = enabled;
76+
}
77+
}

client/tomcatconf/applicationContext.xml.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -355,6 +355,7 @@
355355
<bean id="vMTemplateZoneDaoImpl" class="com.cloud.storage.dao.VMTemplateZoneDaoImpl" />
356356
<bean id="versionDaoImpl" class="com.cloud.upgrade.dao.VersionDaoImpl" />
357357
<bean id="virtualRouterProviderDaoImpl" class="com.cloud.network.dao.VirtualRouterProviderDaoImpl" />
358+
<bean id="ovsProviderDaoImpl" class="com.cloud.network.dao.OvsProviderDaoImpl" />
358359
<bean id="vmRulesetLogDaoImpl" class="com.cloud.network.security.dao.VmRulesetLogDaoImpl" />
359360
<bean id="volumeDaoImpl" class="com.cloud.storage.dao.VolumeDaoImpl" />
360361
<bean id="volumeDetailsDaoImpl" class="com.cloud.storage.dao.VolumeDetailsDaoImpl" />

client/tomcatconf/commands.properties.in

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -503,6 +503,11 @@ createVirtualRouterElement=7
503503
configureVirtualRouterElement=7
504504
listVirtualRouterElements=7
505505

506+
#### ovs commands
507+
createOvsElement=7
508+
configureOvsElement=7
509+
listOvsElements=7
510+
506511
#### usage commands
507512
generateUsageRecords=1
508513
listUsageRecords=7

0 commit comments

Comments
 (0)