mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
Add Region APIs
This commit is contained in:
parent
6a1b0f3ecf
commit
b5563e832e
40
api/src/com/cloud/region/Region.java
Normal file
40
api/src/com/cloud/region/Region.java
Normal file
@ -0,0 +1,40 @@
|
||||
// Licensed to the Apache Software Foundation (ASF) under one
|
||||
// or more contributor license agreements. See the NOTICE file
|
||||
// distributed with this work for additional information
|
||||
// regarding copyright ownership. The ASF licenses this file
|
||||
// to you under the Apache License, Version 2.0 (the
|
||||
// "License"); you may not use this file except in compliance
|
||||
// with the License. You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing,
|
||||
// software distributed under the License is distributed on an
|
||||
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
// KIND, either express or implied. See the License for the
|
||||
// specific language governing permissions and limitations
|
||||
// under the License.
|
||||
package com.cloud.region;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public interface Region {
|
||||
public static enum State {
|
||||
Up, Down
|
||||
};
|
||||
|
||||
public long getId();
|
||||
|
||||
public String getName();
|
||||
|
||||
public void setName(String name);
|
||||
|
||||
public Region.State getStatus();
|
||||
|
||||
public Date getRemoved();
|
||||
|
||||
public String getEndPoint();
|
||||
}
|
||||
30
api/src/com/cloud/region/RegionService.java
Normal file
30
api/src/com/cloud/region/RegionService.java
Normal file
@ -0,0 +1,30 @@
|
||||
// Licensed to the Apache Software Foundation (ASF) under one
|
||||
// or more contributor license agreements. See the NOTICE file
|
||||
// distributed with this work for additional information
|
||||
// regarding copyright ownership. The ASF licenses this file
|
||||
// to you under the Apache License, Version 2.0 (the
|
||||
// "License"); you may not use this file except in compliance
|
||||
// with the License. You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing,
|
||||
// software distributed under the License is distributed on an
|
||||
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
// KIND, either express or implied. See the License for the
|
||||
// specific language governing permissions and limitations
|
||||
// under the License.
|
||||
package com.cloud.region;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.cloud.api.commands.ListRegionsCmd;
|
||||
import com.cloud.user.Account;
|
||||
|
||||
|
||||
public interface RegionService {
|
||||
public Region addRegion(long id, String name, String endPoint);
|
||||
public Region updateRegion(long id, String name, String endPoint);
|
||||
public boolean removeRegion(long id);
|
||||
public List<? extends Region> listRegions(ListRegionsCmd cmd);
|
||||
}
|
||||
30
server/src/com/cloud/region/RegionManager.java
Normal file
30
server/src/com/cloud/region/RegionManager.java
Normal file
@ -0,0 +1,30 @@
|
||||
// Licensed to the Apache Software Foundation (ASF) under one
|
||||
// or more contributor license agreements. See the NOTICE file
|
||||
// distributed with this work for additional information
|
||||
// regarding copyright ownership. The ASF licenses this file
|
||||
// to you under the Apache License, Version 2.0 (the
|
||||
// "License"); you may not use this file except in compliance
|
||||
// with the License. You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing,
|
||||
// software distributed under the License is distributed on an
|
||||
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
// KIND, either express or implied. See the License for the
|
||||
// specific language governing permissions and limitations
|
||||
// under the License.
|
||||
package com.cloud.region;
|
||||
|
||||
|
||||
public interface RegionManager {
|
||||
public boolean propogateAddResource();
|
||||
public boolean propogateUpdateResource();
|
||||
public boolean propogateDeleteResource();
|
||||
public boolean addResource();
|
||||
public boolean updateResource();
|
||||
public boolean deleteResource();
|
||||
|
||||
public long getId();
|
||||
public void setId(long id);
|
||||
}
|
||||
149
server/src/com/cloud/region/RegionManagerImpl.java
Executable file
149
server/src/com/cloud/region/RegionManagerImpl.java
Executable file
@ -0,0 +1,149 @@
|
||||
// Licensed to the Apache Software Foundation (ASF) under one
|
||||
// or more contributor license agreements. See the NOTICE file
|
||||
// distributed with this work for additional information
|
||||
// regarding copyright ownership. The ASF licenses this file
|
||||
// to you under the Apache License, Version 2.0 (the
|
||||
// "License"); you may not use this file except in compliance
|
||||
// with the License. You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing,
|
||||
// software distributed under the License is distributed on an
|
||||
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
// KIND, either express or implied. See the License for the
|
||||
// specific language governing permissions and limitations
|
||||
// under the License.
|
||||
package com.cloud.region;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.ejb.Local;
|
||||
import javax.naming.ConfigurationException;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import com.cloud.api.commands.ListRegionsCmd;
|
||||
import com.cloud.exception.InvalidParameterValueException;
|
||||
import com.cloud.region.dao.RegionDao;
|
||||
import com.cloud.utils.component.Inject;
|
||||
import com.cloud.utils.component.Manager;
|
||||
|
||||
@Local(value = { RegionManager.class, RegionService.class })
|
||||
public class RegionManagerImpl implements RegionManager, RegionService, Manager{
|
||||
public static final Logger s_logger = Logger.getLogger(RegionManagerImpl.class);
|
||||
|
||||
@Inject
|
||||
private RegionDao _regionDao;
|
||||
|
||||
private String _name;
|
||||
private long _id = 1; //ToDo, get this from config
|
||||
|
||||
@Override
|
||||
public boolean configure(final String name, final Map<String, Object> params) throws ConfigurationException {
|
||||
_name = name;
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean start() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean stop() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return _name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean propogateAddResource() {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean propogateUpdateResource() {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean propogateDeleteResource() {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addResource() {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean updateResource() {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean deleteResource() {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Region addRegion(long id, String name, String endPoint) {
|
||||
RegionVO region = new RegionVO(id, name, endPoint);
|
||||
return _regionDao.persist(region);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Region updateRegion(long id, String name, String endPoint) {
|
||||
RegionVO region = _regionDao.findById(id);
|
||||
if(name != null){
|
||||
region.setName(name);
|
||||
}
|
||||
|
||||
if(endPoint != null){
|
||||
region.setEndPoint(endPoint);
|
||||
}
|
||||
|
||||
return region;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean removeRegion(long id) {
|
||||
RegionVO region = _regionDao.findById(id);
|
||||
if(region != null){
|
||||
return _regionDao.remove(id);
|
||||
} else {
|
||||
throw new InvalidParameterValueException("Failed to delete Region: " + id + ", Region not found");
|
||||
}
|
||||
}
|
||||
|
||||
public long getId() {
|
||||
return _id;
|
||||
}
|
||||
|
||||
public void setId(long _id) {
|
||||
this._id = _id;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<RegionVO> listRegions(ListRegionsCmd cmd) {
|
||||
if(cmd.getId() != null){
|
||||
List<RegionVO> regions = new ArrayList<RegionVO>();
|
||||
regions.add(_regionDao.findById(cmd.getId()));
|
||||
return regions;
|
||||
}
|
||||
return _regionDao.listAll();
|
||||
}
|
||||
|
||||
}
|
||||
95
server/src/com/cloud/region/RegionVO.java
Normal file
95
server/src/com/cloud/region/RegionVO.java
Normal file
@ -0,0 +1,95 @@
|
||||
// Licensed to the Apache Software Foundation (ASF) under one
|
||||
// or more contributor license agreements. See the NOTICE file
|
||||
// distributed with this work for additional information
|
||||
// regarding copyright ownership. The ASF licenses this file
|
||||
// to you under the Apache License, Version 2.0 (the
|
||||
// "License"); you may not use this file except in compliance
|
||||
// with the License. You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing,
|
||||
// software distributed under the License is distributed on an
|
||||
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
// KIND, either express or implied. See the License for the
|
||||
// specific language governing permissions and limitations
|
||||
// under the License.
|
||||
package com.cloud.region;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.EnumType;
|
||||
import javax.persistence.Enumerated;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Table;
|
||||
|
||||
import com.cloud.region.Region;
|
||||
import com.cloud.utils.db.GenericDao;
|
||||
|
||||
@Entity
|
||||
@Table(name="region")
|
||||
public class RegionVO implements Region{
|
||||
|
||||
@Id
|
||||
@Column(name="id")
|
||||
long id;
|
||||
|
||||
@Column(name="name")
|
||||
String name;
|
||||
|
||||
@Column(name="end_point")
|
||||
String endPoint;
|
||||
|
||||
@Column(name="status")
|
||||
@Enumerated(value=EnumType.STRING)
|
||||
Region.State status;
|
||||
|
||||
@Column(name=GenericDao.REMOVED_COLUMN)
|
||||
private Date removed;
|
||||
|
||||
public RegionVO() {
|
||||
}
|
||||
|
||||
public RegionVO(long id, String name, String endPoint) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.endPoint = endPoint;
|
||||
this.status = Region.State.Down;
|
||||
}
|
||||
|
||||
public long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public Region.State getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
public void setStatus(Region.State status) {
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
public Date getRemoved() {
|
||||
return removed;
|
||||
}
|
||||
|
||||
public String getEndPoint() {
|
||||
return endPoint;
|
||||
}
|
||||
|
||||
public void setEndPoint(String endPoint) {
|
||||
this.endPoint = endPoint;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
19
server/src/com/cloud/region/dao/RegionDao.java
Normal file
19
server/src/com/cloud/region/dao/RegionDao.java
Normal file
@ -0,0 +1,19 @@
|
||||
// Copyright 2012 Citrix Systems, Inc. Licensed under the
|
||||
// Apache License, Version 2.0 (the "License"); you may not use this
|
||||
// file except in compliance with the License. Citrix Systems, Inc.
|
||||
// reserves all rights not expressly granted by the License.
|
||||
// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
// Automatically generated by addcopyright.py at 04/03/2012
|
||||
package com.cloud.region.dao;
|
||||
|
||||
import com.cloud.region.RegionVO;
|
||||
import com.cloud.utils.db.GenericDao;
|
||||
|
||||
public interface RegionDao extends GenericDao<RegionVO, Long> {
|
||||
}
|
||||
33
server/src/com/cloud/region/dao/RegionDaoImpl.java
Normal file
33
server/src/com/cloud/region/dao/RegionDaoImpl.java
Normal file
@ -0,0 +1,33 @@
|
||||
// Licensed to the Apache Software Foundation (ASF) under one
|
||||
// or more contributor license agreements. See the NOTICE file
|
||||
// distributed with this work for additional information
|
||||
// regarding copyright ownership. The ASF licenses this file
|
||||
// to you under the Apache License, Version 2.0 (the
|
||||
// "License"); you may not use this file except in compliance
|
||||
// with the License. You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing,
|
||||
// software distributed under the License is distributed on an
|
||||
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
// KIND, either express or implied. See the License for the
|
||||
// specific language governing permissions and limitations
|
||||
// under the License.
|
||||
package com.cloud.region.dao;
|
||||
|
||||
import javax.ejb.Local;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import com.cloud.region.RegionVO;
|
||||
import com.cloud.utils.db.GenericDaoBase;
|
||||
|
||||
@Local(value={RegionDao.class})
|
||||
public class RegionDaoImpl extends GenericDaoBase<RegionVO, Long> implements RegionDao {
|
||||
private static final Logger s_logger = Logger.getLogger(RegionDaoImpl.class);
|
||||
|
||||
public RegionDaoImpl(){
|
||||
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user