Return-Path: X-Original-To: apmail-cloudstack-commits-archive@www.apache.org Delivered-To: apmail-cloudstack-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 810C211DA1 for ; Mon, 13 May 2013 17:45:27 +0000 (UTC) Received: (qmail 25481 invoked by uid 500); 13 May 2013 15:53:23 -0000 Delivered-To: apmail-cloudstack-commits-archive@cloudstack.apache.org Received: (qmail 25377 invoked by uid 500); 13 May 2013 15:53:23 -0000 Mailing-List: contact commits-help@cloudstack.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cloudstack.apache.org Delivered-To: mailing list commits@cloudstack.apache.org Received: (qmail 24885 invoked by uid 99); 13 May 2013 15:53:22 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 13 May 2013 15:53:22 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id 3D56588F775; Mon, 13 May 2013 15:53:22 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: muralireddy@apache.org To: commits@cloudstack.apache.org Date: Mon, 13 May 2013 15:53:33 -0000 Message-Id: In-Reply-To: <3dd7f1ce499f4ed180dff4676f352f9b@git.apache.org> References: <3dd7f1ce499f4ed180dff4676f352f9b@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [13/93] [abbrv] [partial] merge master http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c11dbad9/engine/schema/src/com/cloud/migration/DiskOffering21VO.java ---------------------------------------------------------------------- diff --git a/engine/schema/src/com/cloud/migration/DiskOffering21VO.java b/engine/schema/src/com/cloud/migration/DiskOffering21VO.java new file mode 100644 index 0000000..593f7ba --- /dev/null +++ b/engine/schema/src/com/cloud/migration/DiskOffering21VO.java @@ -0,0 +1,257 @@ +// 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.migration; + +import java.util.Date; +import java.util.List; + +import javax.persistence.Column; +import javax.persistence.DiscriminatorColumn; +import javax.persistence.DiscriminatorType; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; +import javax.persistence.Table; +import javax.persistence.Transient; + +import com.cloud.utils.db.GenericDao; +import org.apache.cloudstack.api.InternalIdentity; + +@Entity +@Table(name="disk_offering_21") +@Inheritance(strategy=InheritanceType.JOINED) +@DiscriminatorColumn(name="type", discriminatorType=DiscriminatorType.STRING, length=32) +public class DiskOffering21VO implements InternalIdentity { + public enum Type { + Disk, + Service + }; + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + @Column(name="id") + long id; + + @Column(name="domain_id") + Long domainId; + + @Column(name="unique_name") + private String uniqueName; + + @Column(name="name") + private String name = null; + + @Column(name="display_text") + private String displayText = null; + + @Column(name="disk_size") + long diskSize; + + @Column(name="mirrored") + boolean mirrored; + + @Column(name="tags") + String tags; + + @Column(name="type") + Type type; + + @Column(name=GenericDao.REMOVED_COLUMN) + private Date removed; + + @Column(name=GenericDao.CREATED_COLUMN) + private Date created; + + @Column(name="recreatable") + private boolean recreatable; + + @Column(name="use_local_storage") + private boolean useLocalStorage; + + @Column(name="system_use") + protected boolean systemUse; + + + public DiskOffering21VO() { + } + + public DiskOffering21VO(long domainId, String name, String displayText, long diskSize, boolean mirrored, String tags) { + this.domainId = domainId; + this.name = name; + this.displayText = displayText; + this.diskSize = diskSize; + this.mirrored = mirrored; + this.tags = tags; + this.recreatable = false; + this.type = Type.Disk; + this.useLocalStorage = false; + } + + public DiskOffering21VO(String name, String displayText, boolean mirrored, String tags, boolean recreatable, boolean useLocalStorage) { + this.domainId = null; + this.type = Type.Service; + this.name = name; + this.displayText = displayText; + this.mirrored = mirrored; + this.tags = tags; + this.recreatable = recreatable; + this.useLocalStorage = useLocalStorage; + } + + public long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getUniqueName() { + return uniqueName; + } + + public boolean getSystemUse() { + return systemUse; + } + + public void setSystemUse(boolean systemUse) { + this.systemUse = systemUse; + } + + public boolean getUseLocalStorage() { + return useLocalStorage; + } + + public void setUserLocalStorage(boolean useLocalStorage) { + this.useLocalStorage = useLocalStorage; + } + + public Long getDomainId() { + return domainId; + } + + public Type getType() { + return type; + } + + public void setType(Type type) { + this.type = type; + } + + public boolean isRecreatable() { + return recreatable; + } + + public void setDomainId(Long domainId) { + this.domainId = domainId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDisplayText() { + return displayText; + } + public void setDisplayText(String displayText) { + this.displayText = displayText; + } + + public long getDiskSizeInBytes() { + return diskSize * 1024 * 1024; + } + + public void setDiskSize(long diskSize) { + this.diskSize = diskSize; + } + + public boolean isMirrored() { + return mirrored; + } + public void setMirrored(boolean mirrored) { + this.mirrored = mirrored; + } + + public Date getRemoved() { + return removed; + } + + public Date getCreated() { + return created; + } + + protected void setTags(String tags) { + this.tags = tags; + } + + public String getTags() { + return tags; + } + + public void setUniqueName(String name) { + this.uniqueName = name; + } + + @Transient + public String[] getTagsArray() { + String tags = getTags(); + if (tags == null || tags.isEmpty()) { + return new String[0]; + } + + return tags.split(","); + } + + @Transient + public boolean containsTag(String... tags) { + if (this.tags == null) { + return false; + } + + for (String tag : tags) { + if (!this.tags.matches(tag)) { + return false; + } + } + + return true; + } + + @Transient + public void setTagsArray(List newTags) { + if (newTags.isEmpty()) { + setTags(null); + return; + } + + StringBuilder buf = new StringBuilder(); + for (String tag : newTags) { + buf.append(tag).append(","); + } + + buf.delete(buf.length() - 1, buf.length()); + + setTags(buf.toString()); + } +} http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c11dbad9/engine/schema/src/com/cloud/migration/ServiceOffering20Dao.java ---------------------------------------------------------------------- diff --git a/engine/schema/src/com/cloud/migration/ServiceOffering20Dao.java b/engine/schema/src/com/cloud/migration/ServiceOffering20Dao.java new file mode 100644 index 0000000..e87b684 --- /dev/null +++ b/engine/schema/src/com/cloud/migration/ServiceOffering20Dao.java @@ -0,0 +1,22 @@ +// 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.migration; + +import com.cloud.utils.db.GenericDao; + +public interface ServiceOffering20Dao extends GenericDao { +} http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c11dbad9/engine/schema/src/com/cloud/migration/ServiceOffering20DaoImpl.java ---------------------------------------------------------------------- diff --git a/engine/schema/src/com/cloud/migration/ServiceOffering20DaoImpl.java b/engine/schema/src/com/cloud/migration/ServiceOffering20DaoImpl.java new file mode 100644 index 0000000..f67949e --- /dev/null +++ b/engine/schema/src/com/cloud/migration/ServiceOffering20DaoImpl.java @@ -0,0 +1,27 @@ +// 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.migration; + +import javax.ejb.Local; + +import org.springframework.stereotype.Component; + +import com.cloud.utils.db.GenericDaoBase; + +@Local(value={ServiceOffering20Dao.class}) +public class ServiceOffering20DaoImpl extends GenericDaoBase implements ServiceOffering20Dao { +} http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c11dbad9/engine/schema/src/com/cloud/migration/ServiceOffering20VO.java ---------------------------------------------------------------------- diff --git a/engine/schema/src/com/cloud/migration/ServiceOffering20VO.java b/engine/schema/src/com/cloud/migration/ServiceOffering20VO.java new file mode 100644 index 0000000..bed29ec --- /dev/null +++ b/engine/schema/src/com/cloud/migration/ServiceOffering20VO.java @@ -0,0 +1,199 @@ +// 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.migration; + +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + +import com.cloud.dc.Vlan; +import com.cloud.dc.Vlan.VlanType; +import com.cloud.utils.db.GenericDao; +import org.apache.cloudstack.api.InternalIdentity; + +@Entity +@Table(name="service_offering") +public class ServiceOffering20VO implements InternalIdentity { + @Id + @GeneratedValue(strategy=GenerationType.IDENTITY) + @Column(name="id") + private Long id = null; + + @Column(name="name") + private String name = null; + + @Column(name="cpu") + private int cpu; + + @Column(name="speed") + private int speed; + + @Column(name="ram_size") + private int ramSize; + + @Column(name="nw_rate") + private int rateMbps; + + @Column(name="mc_rate") + private int multicastRateMbps; + + @Column(name="mirrored") + private boolean mirroredVolumes; + + @Column(name="ha_enabled") + private boolean offerHA; + + @Column(name="display_text") + private String displayText = null; + + @Column(name="guest_ip_type") + @Enumerated(EnumType.STRING) + private Vlan.VlanType guestIpType = Vlan.VlanType.VirtualNetwork; + + @Column(name="use_local_storage") + private boolean useLocalStorage; + + @Column(name=GenericDao.CREATED_COLUMN) + private Date created; + + @Column(name=GenericDao.REMOVED_COLUMN) + private Date removed; + + protected ServiceOffering20VO() { + } + + public ServiceOffering20VO(Long id, String name, int cpu, int ramSize, int speed, int rateMbps, int multicastRateMbps, boolean offerHA, String displayText, boolean localStorageRequired) { + this(id, name, cpu, ramSize, speed, rateMbps, multicastRateMbps, offerHA, displayText, Vlan.VlanType.VirtualNetwork, localStorageRequired); + } + + public ServiceOffering20VO(Long id, String name, int cpu, int ramSize, int speed, int rateMbps, int multicastRateMbps, boolean offerHA, String displayText, VlanType guestIpType, boolean useLocalStorage) { + this.id = id; + this.name = name; + this.cpu = cpu; + this.ramSize = ramSize; + this.speed = speed; + this.rateMbps = rateMbps; + this.multicastRateMbps = multicastRateMbps; + this.offerHA = offerHA; + this.displayText = displayText; + this.guestIpType = guestIpType; + this.useLocalStorage = useLocalStorage; + } + + public boolean getOfferHA() { + return offerHA; + } + + public void setOfferHA(boolean offerHA) { + this.offerHA = offerHA; + } + + public long getId() { + return id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getCpu() { + return cpu; + } + + public void setCpu(int cpu) { + this.cpu = cpu; + } + + public void setSpeed(int speed) { + this.speed = speed; + } + + public void setRamSize(int ramSize) { + this.ramSize = ramSize; + } + + public int getSpeed() { + return speed; + } + + public int getRamSize() { + return ramSize; + } + + public Date getCreated() { + return created; + } + + public Date getRemoved() { + return removed; + } + + public void setMirroredVolumes(boolean mirroredVolumes) { + this.mirroredVolumes = mirroredVolumes; + } + + public boolean isMirroredVolumes() { + return mirroredVolumes; + } + + public String getDisplayText() { + return displayText; + } + + public void setDisplayText(String displayText) { + this.displayText = displayText; + } + + public void setRateMbps(int rateMbps) { + this.rateMbps = rateMbps; + } + + public int getRateMbps() { + return rateMbps; + } + + public void setMulticastRateMbps(int multicastRateMbps) { + this.multicastRateMbps = multicastRateMbps; + } + + public int getMulticastRateMbps() { + return multicastRateMbps; + } + + public void setGuestIpType(Vlan.VlanType guestIpType) { + this.guestIpType = guestIpType; + } + + public Vlan.VlanType getGuestIpType() { + return guestIpType; + } + + public boolean getUseLocalStorage() { + return useLocalStorage; + } +} http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c11dbad9/engine/schema/src/com/cloud/migration/ServiceOffering21Dao.java ---------------------------------------------------------------------- diff --git a/engine/schema/src/com/cloud/migration/ServiceOffering21Dao.java b/engine/schema/src/com/cloud/migration/ServiceOffering21Dao.java new file mode 100644 index 0000000..eece426 --- /dev/null +++ b/engine/schema/src/com/cloud/migration/ServiceOffering21Dao.java @@ -0,0 +1,22 @@ +// 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.migration; + +import com.cloud.utils.db.GenericDao; + +public interface ServiceOffering21Dao extends GenericDao { +} http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c11dbad9/engine/schema/src/com/cloud/migration/ServiceOffering21DaoImpl.java ---------------------------------------------------------------------- diff --git a/engine/schema/src/com/cloud/migration/ServiceOffering21DaoImpl.java b/engine/schema/src/com/cloud/migration/ServiceOffering21DaoImpl.java new file mode 100644 index 0000000..ce24191 --- /dev/null +++ b/engine/schema/src/com/cloud/migration/ServiceOffering21DaoImpl.java @@ -0,0 +1,27 @@ +// 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.migration; + +import javax.ejb.Local; + +import org.springframework.stereotype.Component; + +import com.cloud.utils.db.GenericDaoBase; + +@Local(value={ServiceOffering21Dao.class}) +public class ServiceOffering21DaoImpl extends GenericDaoBase implements ServiceOffering21Dao { +} http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c11dbad9/engine/schema/src/com/cloud/migration/ServiceOffering21VO.java ---------------------------------------------------------------------- diff --git a/engine/schema/src/com/cloud/migration/ServiceOffering21VO.java b/engine/schema/src/com/cloud/migration/ServiceOffering21VO.java new file mode 100644 index 0000000..d07be64 --- /dev/null +++ b/engine/schema/src/com/cloud/migration/ServiceOffering21VO.java @@ -0,0 +1,178 @@ +// 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.migration; + +import javax.persistence.Column; +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; +import javax.persistence.PrimaryKeyJoinColumn; +import javax.persistence.Table; +import javax.persistence.Transient; + +import com.cloud.offering.ServiceOffering; + +@Entity +@Table(name="service_offering_21") +@DiscriminatorValue(value="Service") +@PrimaryKeyJoinColumn(name="id") +public class ServiceOffering21VO extends DiskOffering21VO implements ServiceOffering { + @Column(name="cpu") + private int cpu; + + @Column(name="speed") + private int speed; + + @Column(name="ram_size") + private int ramSize; + + @Column(name="nw_rate") + private Integer rateMbps; + + @Column(name="mc_rate") + private Integer multicastRateMbps; + + @Column(name="ha_enabled") + private boolean offerHA; + + @Column(name="host_tag") + private String hostTag; + + protected ServiceOffering21VO() { + super(); + } + + public ServiceOffering21VO(String name, int cpu, int ramSize, int speed, Integer rateMbps, Integer multicastRateMbps, boolean offerHA, String displayText, boolean useLocalStorage, boolean recreatable, String tags) { + super(name, displayText, false, tags, recreatable, useLocalStorage); + this.cpu = cpu; + this.ramSize = ramSize; + this.speed = speed; + this.rateMbps = rateMbps; + this.multicastRateMbps = multicastRateMbps; + this.offerHA = offerHA; + } + + public ServiceOffering21VO(String name, int cpu, int ramSize, int speed, Integer rateMbps, Integer multicastRateMbps, boolean offerHA, String displayText, boolean useLocalStorage, boolean recreatable, String tags, String hostTag) { + this(name, cpu, ramSize, speed, rateMbps, multicastRateMbps, offerHA, displayText, useLocalStorage, recreatable, tags); + this.hostTag = hostTag; + } + + + @Override + public boolean getOfferHA() { + return offerHA; + } + + @Override + public boolean getLimitCpuUse() { + return false; + } + + public void setOfferHA(boolean offerHA) { + this.offerHA = offerHA; + } + + @Override + @Transient + public String[] getTagsArray() { + String tags = getTags(); + if (tags == null || tags.length() == 0) { + return new String[0]; + } + + return tags.split(","); + } + + @Override + public int getCpu() { + return cpu; + } + + public void setCpu(int cpu) { + this.cpu = cpu; + } + + public void setSpeed(int speed) { + this.speed = speed; + } + + public void setRamSize(int ramSize) { + this.ramSize = ramSize; + } + + @Override + public int getSpeed() { + return speed; + } + + @Override + public int getRamSize() { + return ramSize; + } + + public void setRateMbps(Integer rateMbps) { + this.rateMbps = rateMbps; + } + + @Override + public Integer getRateMbps() { + return rateMbps; + } + + public void setMulticastRateMbps(Integer multicastRateMbps) { + this.multicastRateMbps = multicastRateMbps; + } + + @Override + public Integer getMulticastRateMbps() { + return multicastRateMbps; + } + + public String gethypervisorType() { + return null; + } + + public void setHostTag(String hostTag) { + this.hostTag = hostTag; + } + + public String getHostTag() { + return hostTag; + } + + @Override + public boolean getDefaultUse() { + return false; + } + + @Override + public String getSystemVmType() { + return null; + } + + @Override + public String getUuid() { + // TODO Auto-generated method stub + return null; + } + + @Override + public boolean getVolatileVm() { + return false; + } + + +} http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c11dbad9/engine/schema/src/com/cloud/network/LBHealthCheckPolicyVO.java ---------------------------------------------------------------------- diff --git a/engine/schema/src/com/cloud/network/LBHealthCheckPolicyVO.java b/engine/schema/src/com/cloud/network/LBHealthCheckPolicyVO.java new file mode 100644 index 0000000..ed03a2b --- /dev/null +++ b/engine/schema/src/com/cloud/network/LBHealthCheckPolicyVO.java @@ -0,0 +1,157 @@ +// 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.network; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.PrimaryKeyJoinColumn; +import javax.persistence.Table; + +import com.cloud.network.rules.HealthCheckPolicy; +import org.apache.cloudstack.api.InternalIdentity; + +@Entity +@Table(name = ("load_balancer_healthcheck_policies")) +@PrimaryKeyJoinColumn(name = "load_balancer_id", referencedColumnName = "id") +public class LBHealthCheckPolicyVO implements HealthCheckPolicy { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") + private long id; + + @Column(name = "load_balancer_id") + private long loadBalancerId; + + @Column(name = "pingpath") + private String pingPath; + + @Column(name = "description") + private String description; + + @Column(name = "uuid") + private String uuid; + + @Column(name = "response_time") + private int responseTime; + + @Column(name = "healthcheck_interval") + private int healthcheckInterval; + + @Column(name = "healthcheck_thresshold") + private int healthcheckThresshold; + + @Column(name = "unhealth_thresshold") + private int unhealthThresshold; + + @Column(name = "revoke") + private boolean revoke = false; + + protected LBHealthCheckPolicyVO() { + this.uuid = UUID.randomUUID().toString(); + } + + public LBHealthCheckPolicyVO(long loadBalancerId, String pingPath, String description, int responseTime, + int healthcheckInterval, int healthcheckThresshold, int unhealthThresshold) { + this.loadBalancerId = loadBalancerId; + + if (pingPath == null || pingPath.isEmpty()) + this.pingPath = "/"; + else + this.pingPath = pingPath; + + if (responseTime == 0) + this.responseTime = 2; + else + this.responseTime = responseTime; + + if (healthcheckInterval == 0) + this.healthcheckInterval = 5; + else + this.healthcheckInterval = healthcheckInterval; + + if (healthcheckThresshold == 0) + this.healthcheckThresshold = 2; + else + this.healthcheckThresshold = healthcheckThresshold; + + if (unhealthThresshold == 0) + this.unhealthThresshold = 1; + else + this.unhealthThresshold = unhealthThresshold; + this.uuid = UUID.randomUUID().toString(); + + } + + public int getResponseTime() { + return responseTime; + } + + public int getHealthcheckInterval() { + return healthcheckInterval; + } + + public int getHealthcheckThresshold() { + return healthcheckThresshold; + } + + public int getUnhealthThresshold() { + return unhealthThresshold; + } + + public long getId() { + return id; + } + + public long getLoadBalancerId() { + return loadBalancerId; + } + + public String getpingpath() { + return pingPath; + } + + public String getDescription() { + return description; + } + + public boolean isRevoke() { + return revoke; + } + + public void setRevoke(boolean revoke) { + this.revoke = revoke; + } + + @Override + public String getUuid() { + return this.uuid; + } + + public void setUuid(String uuid) { + this.uuid = uuid; + } +} http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c11dbad9/engine/schema/src/com/cloud/network/UserIpv6AddressVO.java ---------------------------------------------------------------------- diff --git a/engine/schema/src/com/cloud/network/UserIpv6AddressVO.java b/engine/schema/src/com/cloud/network/UserIpv6AddressVO.java new file mode 100644 index 0000000..70eb12d --- /dev/null +++ b/engine/schema/src/com/cloud/network/UserIpv6AddressVO.java @@ -0,0 +1,188 @@ +// 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.network; + +import java.util.Date; +import java.util.UUID; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Transient; + +import com.cloud.utils.db.GenericDao; + +@Entity +@Table(name=("user_ipv6_address")) +public class UserIpv6AddressVO implements UserIpv6Address { + @Id + @GeneratedValue(strategy=GenerationType.IDENTITY) + @Column(name="id") + long id; + + @Column(name="ip_address") + @Enumerated(value=EnumType.STRING) + private String address = null; + + @Column(name="data_center_id", updatable=false) + private long dataCenterId; + + @Column(name="vlan_id") + private long vlanId; + + @Column(name="state") + private State state; + + @Column(name="mac_address") + private String macAddress; + + @Column(name="source_network_id") + private Long sourceNetworkId; + + @Column(name="network_id") + private Long networkId; + + @Column(name="uuid") + private String uuid; + + @Column(name="physical_network_id") + private Long physicalNetworkId; + + @Column(name="account_id") + private Long accountId = null; + + @Column(name="domain_id") + private Long domainId = null; + + @Column(name = GenericDao.CREATED_COLUMN) + Date created; + + protected UserIpv6AddressVO() { + this.uuid = UUID.randomUUID().toString(); + } + + public UserIpv6AddressVO(String address, long dataCenterId, String macAddress, long vlanDbId) { + this.address = address; + this.dataCenterId = dataCenterId; + this.vlanId = vlanDbId; + this.state = State.Free; + this.setMacAddress(macAddress); + this.uuid = UUID.randomUUID().toString(); + } + + + @Override + public long getAccountId() { + return accountId; + } + + @Override + public long getDomainId() { + return domainId; + } + + @Override + public String getUuid() { + return uuid; + } + + @Override + public long getId() { + return id; + } + + @Override + public long getDataCenterId() { + return dataCenterId; + } + + @Override + public String getAddress() { + return address; + } + + @Override + public long getVlanId() { + return vlanId; + } + + @Override + public State getState() { + return state; + } + + @Override + public Long getNetworkId() { + return networkId; + } + + @Override + public Long getSourceNetworkId() { + return sourceNetworkId; + } + + @Override + public Long getPhysicalNetworkId() { + return physicalNetworkId; + } + + @Override + public void setState(State state) { + this.state = state; + } + + public String getMacAddress() { + return macAddress; + } + + public void setMacAddress(String macAddress) { + this.macAddress = macAddress; + } + + public void setSourceNetworkId(Long sourceNetworkId) { + this.sourceNetworkId = sourceNetworkId; + } + + public void setNetworkId(Long networkId) { + this.networkId = networkId; + } + + public void setPhysicalNetworkId(Long physicalNetworkId) { + this.physicalNetworkId = physicalNetworkId; + } + + public void setDomainId(Long domainId) { + this.domainId = domainId; + } + + public void setAccountId(Long accountId) { + this.accountId = accountId; + } + + public Date getCreated() { + return created; + } + + public void setCreated(Date created) { + this.created = created; + } +} http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c11dbad9/engine/schema/src/com/cloud/network/VpnUserVO.java ---------------------------------------------------------------------- diff --git a/engine/schema/src/com/cloud/network/VpnUserVO.java b/engine/schema/src/com/cloud/network/VpnUserVO.java new file mode 100644 index 0000000..5a8e531 --- /dev/null +++ b/engine/schema/src/com/cloud/network/VpnUserVO.java @@ -0,0 +1,131 @@ +// 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.network; + +import java.util.UUID; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + +import org.apache.cloudstack.api.Identity; +import com.cloud.utils.db.Encrypt; +import org.apache.cloudstack.api.InternalIdentity; + +@Entity +@Table(name=("vpn_users")) +public class VpnUserVO implements VpnUser { + @Id + @GeneratedValue(strategy=GenerationType.IDENTITY) + @Column(name="id") + private long id; + + @Column(name="owner_id") + private long accountId; + + @Column(name="domain_id") + private long domainId; + + @Column(name="username") + private String username; + + @Encrypt + @Column(name="password") + private String password; + + @Column(name="state") + @Enumerated(value=EnumType.STRING) + private State state; + + @Column(name="uuid") + private String uuid; + + public VpnUserVO() { + this.uuid = UUID.randomUUID().toString(); + } + + public VpnUserVO(long accountId, long domainId, String userName, String password) { + this.accountId = accountId; + this.domainId = domainId; + this.username = userName; + this.password = password; + this.state = State.Add; + this.uuid = UUID.randomUUID().toString(); + } + + @Override + public long getId() { + return id; + } + + @Override + public long getAccountId() { + return accountId; + } + + @Override + public String getUsername() { + return username; + } + + public void setUsername(String userName) { + this.username = userName; + } + + @Override + public String getPassword() { + return password; + } + + @Override + public State getState() { + return state; + } + + public void setState(State state) { + this.state = state; + } + + public void setPassword(String password) { + this.password = password; + } + + @Override + public long getDomainId() { + return domainId; + } + + + @Override + public String toString() { + return new StringBuilder("VpnUser[").append(id).append("-").append(username).append("-").append(accountId).append("]").toString(); + } + + @Override + public String getUuid() { + return this.uuid; + } + + public void setUuid(String uuid) { + this.uuid = uuid; + } +} http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c11dbad9/engine/schema/src/com/cloud/network/as/AutoScalePolicyConditionMapVO.java ---------------------------------------------------------------------- diff --git a/engine/schema/src/com/cloud/network/as/AutoScalePolicyConditionMapVO.java b/engine/schema/src/com/cloud/network/as/AutoScalePolicyConditionMapVO.java new file mode 100644 index 0000000..7d87b27 --- /dev/null +++ b/engine/schema/src/com/cloud/network/as/AutoScalePolicyConditionMapVO.java @@ -0,0 +1,61 @@ +// 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.network.as; + +import org.apache.cloudstack.api.InternalIdentity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + +@Entity +@Table(name=("autoscale_policy_condition_map")) +public class AutoScalePolicyConditionMapVO implements InternalIdentity { + + @Id + @GeneratedValue(strategy=GenerationType.IDENTITY) + @Column(name="id") + private long id; + + @Column(name="policy_id") + private long policyId; + + @Column(name="condition_id") + private long conditionId; + + public AutoScalePolicyConditionMapVO() { } + + public AutoScalePolicyConditionMapVO(long policyId, long conditionId) { + this.policyId = policyId; + this.conditionId = conditionId; + } + + public long getId() { + return id; + } + + public long getPolicyId() { + return policyId; + } + + public long getConditionId() { + return conditionId; + } +} http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c11dbad9/engine/schema/src/com/cloud/network/as/AutoScalePolicyVO.java ---------------------------------------------------------------------- diff --git a/engine/schema/src/com/cloud/network/as/AutoScalePolicyVO.java b/engine/schema/src/com/cloud/network/as/AutoScalePolicyVO.java new file mode 100644 index 0000000..f8fbcb4 --- /dev/null +++ b/engine/schema/src/com/cloud/network/as/AutoScalePolicyVO.java @@ -0,0 +1,134 @@ +// 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.network.as; + +import java.util.Date; +import java.util.UUID; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; +import javax.persistence.Table; + +import com.cloud.utils.db.GenericDao; +import org.apache.cloudstack.api.InternalIdentity; + +@Entity +@Table(name = "autoscale_policies") +@Inheritance(strategy = InheritanceType.JOINED) +public class AutoScalePolicyVO implements AutoScalePolicy, InternalIdentity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") + long id; + + @Column(name = "uuid") + String uuid; + + @Column(name = "domain_id") + private long domainId; + + @Column(name = "account_id") + private long accountId; + + @Column(name = "duration") + private int duration; + + @Column(name = "quiet_time", updatable = true, nullable = false) + private int quietTime; + + @Column(name = "action", updatable = false, nullable = false) + private String action; + + @Column(name = GenericDao.REMOVED_COLUMN) + protected Date removed; + + @Column(name = GenericDao.CREATED_COLUMN) + protected Date created; + + public AutoScalePolicyVO() { + } + + public AutoScalePolicyVO(long domainId, long accountId, int duration, int quietTime, String action) { + this.uuid = UUID.randomUUID().toString(); + this.domainId = domainId; + this.accountId = accountId; + this.duration = duration; + this.quietTime = quietTime; + this.action = action; + } + + @Override + public String toString() { + return new StringBuilder("AutoScalePolicy[").append("id-").append(id).append("]").toString(); + } + + @Override + public long getId() { + return id; + } + + public String getUuid() { + return uuid; + } + + @Override + public long getDomainId() { + return domainId; + } + + @Override + public long getAccountId() { + return accountId; + } + + @Override + public int getDuration() { + return duration; + } + + @Override + public int getQuietTime() { + return quietTime; + } + + @Override + public String getAction() { + return action; + } + + public Date getRemoved() { + return removed; + } + + public Date getCreated() { + return created; + } + + public void setDuration(Integer duration) { + this.duration = duration; + } + + public void setQuietTime(Integer quietTime) { + this.quietTime = quietTime; + } +} http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c11dbad9/engine/schema/src/com/cloud/network/as/AutoScaleVmGroupPolicyMapVO.java ---------------------------------------------------------------------- diff --git a/engine/schema/src/com/cloud/network/as/AutoScaleVmGroupPolicyMapVO.java b/engine/schema/src/com/cloud/network/as/AutoScaleVmGroupPolicyMapVO.java new file mode 100644 index 0000000..7e1c38a --- /dev/null +++ b/engine/schema/src/com/cloud/network/as/AutoScaleVmGroupPolicyMapVO.java @@ -0,0 +1,64 @@ +// 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.network.as; + +import org.apache.cloudstack.api.InternalIdentity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + +@Entity +@Table(name=("autoscale_vmgroup_policy_map")) +public class AutoScaleVmGroupPolicyMapVO implements InternalIdentity { + @Id + @GeneratedValue(strategy=GenerationType.IDENTITY) + @Column(name="id") + private long id; + + @Column(name="vmgroup_id") + private long vmGroupId; + + @Column(name="policy_id") + private long policyId; + + public AutoScaleVmGroupPolicyMapVO() { } + + public AutoScaleVmGroupPolicyMapVO(long vmGroupId, long policyId) { + this.vmGroupId = vmGroupId; + this.policyId = policyId; + } + + public AutoScaleVmGroupPolicyMapVO(long vmgroupId, long policyId, boolean revoke) { + this(vmgroupId, policyId); + } + + public long getId() { + return id; + } + + public long getVmGroupId() { + return vmGroupId; + } + + public long getPolicyId() { + return policyId; + } +} http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c11dbad9/engine/schema/src/com/cloud/network/as/AutoScaleVmGroupVO.java ---------------------------------------------------------------------- diff --git a/engine/schema/src/com/cloud/network/as/AutoScaleVmGroupVO.java b/engine/schema/src/com/cloud/network/as/AutoScaleVmGroupVO.java new file mode 100644 index 0000000..d1d85f9 --- /dev/null +++ b/engine/schema/src/com/cloud/network/as/AutoScaleVmGroupVO.java @@ -0,0 +1,191 @@ +// 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.network.as; + +import java.util.Date; +import java.util.UUID; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; +import javax.persistence.Table; + +import com.cloud.utils.db.GenericDao; +import org.apache.cloudstack.api.InternalIdentity; + +@Entity +@Table(name = "autoscale_vmgroups") +@Inheritance(strategy = InheritanceType.JOINED) +public class AutoScaleVmGroupVO implements AutoScaleVmGroup, InternalIdentity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") + long id; + + @Column(name = "uuid") + String uuid; + + @Column(name = "zone_id", updatable = false) + private long zoneId; + + @Column(name = "domain_id", updatable = false) + private long domainId; + + @Column(name = "account_id") + private long accountId; + + @Column(name = "load_balancer_id") + private Long loadBalancerId; + + @Column(name = "min_members", updatable = true) + private int minMembers; + + @Column(name = "max_members", updatable = true) + private int maxMembers; + + @Column(name = "member_port") + private int memberPort; + + @Column(name = "interval") + private int interval; + + @Column(name = "profile_id") + private long profileId; + + @Column(name = GenericDao.REMOVED_COLUMN) + protected Date removed; + + @Column(name = GenericDao.CREATED_COLUMN) + protected Date created; + + @Column(name = "state") + private String state; + + public AutoScaleVmGroupVO() { + } + + public AutoScaleVmGroupVO(long lbRuleId, long zoneId, long domainId, long accountId, int minMembers, int maxMembers, int memberPort, int interval, long profileId, String state) { + this.uuid = UUID.randomUUID().toString(); + this.loadBalancerId = lbRuleId; + this.minMembers = minMembers; + this.maxMembers = maxMembers; + this.memberPort = memberPort; + this.profileId = profileId; + this.accountId = accountId; + this.domainId = domainId; + this.zoneId = zoneId; + this.state = state; + this.interval = interval; + } + + @Override + public String toString() { + return new StringBuilder("AutoScaleVmGroupVO[").append("id").append("]").toString(); + } + + @Override + public long getId() { + return id; + } + + public long getZoneId() { + return zoneId; + } + + @Override + public long getDomainId() { + return domainId; + } + + @Override + public long getAccountId() { + return accountId; + } + + @Override + public Long getLoadBalancerId() { + return loadBalancerId; + } + + @Override + public int getMinMembers() { + return minMembers; + } + + @Override + public int getMaxMembers() { + return maxMembers; + } + + @Override + public int getMemberPort() { + return memberPort; + } + + @Override + public int getInterval() { + return interval; + } + + @Override + public long getProfileId() { + return profileId; + } + + public Date getRemoved() { + return removed; + } + + public Date getCreated() { + return created; + } + + @Override + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + + public void setMinMembers(int minMembers) { + this.minMembers = minMembers; + } + + public void setMaxMembers(int maxMembers) { + this.maxMembers = maxMembers; + } + + public void setInterval(Integer interval) { + this.interval = interval; + } + + public void setLoadBalancerId(Long loadBalancerId) { + this.loadBalancerId = loadBalancerId; + } + + @Override + public String getUuid() { + return uuid; + } +} http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c11dbad9/engine/schema/src/com/cloud/network/as/AutoScaleVmProfileVO.java ---------------------------------------------------------------------- diff --git a/engine/schema/src/com/cloud/network/as/AutoScaleVmProfileVO.java b/engine/schema/src/com/cloud/network/as/AutoScaleVmProfileVO.java new file mode 100644 index 0000000..011be2b --- /dev/null +++ b/engine/schema/src/com/cloud/network/as/AutoScaleVmProfileVO.java @@ -0,0 +1,218 @@ +// 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.network.as; + +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; +import javax.persistence.Table; + +import org.apache.cloudstack.api.Identity; +import com.cloud.utils.Pair; +import com.cloud.utils.db.GenericDao; +import com.cloud.utils.net.NetUtils; +import org.apache.cloudstack.api.InternalIdentity; + +@Entity +@Table(name = "autoscale_vmprofiles") +@Inheritance(strategy = InheritanceType.JOINED) +public class AutoScaleVmProfileVO implements AutoScaleVmProfile, Identity, InternalIdentity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") + protected long id; + + @Column(name = "uuid") + protected String uuid; + + @Column(name = "zone_id", updatable = true, nullable = false) + protected Long zoneId; + + @Column(name = "domain_id", updatable = true) + private long domainId; + + @Column(name = "account_id") + private long accountId; + + @Column(name = "autoscale_user_id") + private long autoscaleUserId; + + @Column(name = "service_offering_id", updatable = true, nullable = false) + private Long serviceOfferingId; + + @Column(name = "template_id", updatable = true, nullable = false, length = 17) + private Long templateId; + + @Column(name = "other_deploy_params", updatable = true, length = 1024) + private String otherDeployParams; + + @Column(name = "destroy_vm_grace_period", updatable = true) + private Integer destroyVmGraceperiod = NetUtils.DEFAULT_AUTOSCALE_VM_DESTROY_TIME; + + @Column(name = "counter_params", updatable = true) + private String counterParams; + + @Column(name = GenericDao.REMOVED_COLUMN) + protected Date removed; + + @Column(name = GenericDao.CREATED_COLUMN) + protected Date created; + + public AutoScaleVmProfileVO() { + } + + public AutoScaleVmProfileVO(long zoneId, long domainId, long accountId, long serviceOfferingId, long templateId, String otherDeployParams, Map counterParamList, Integer destroyVmGraceperiod, + long autoscaleUserId) { + this.uuid = UUID.randomUUID().toString(); + this.zoneId = zoneId; + this.domainId = domainId; + this.accountId = accountId; + this.serviceOfferingId = serviceOfferingId; + this.templateId = templateId; + this.otherDeployParams = otherDeployParams; + this.autoscaleUserId = autoscaleUserId; + if (destroyVmGraceperiod != null) { + this.destroyVmGraceperiod = destroyVmGraceperiod; + } + setCounterParamsForUpdate(counterParamList); + } + + @Override + public String toString() { + return new StringBuilder("AutoScaleVMProfileVO[").append("id").append(id).append("-").append("templateId").append("-").append(templateId).append("]").toString(); + } + + @Override + public Long getTemplateId() { + return templateId; + } + + public void setTemplateId(Long templateId) { + this.templateId = templateId; + } + + @Override + public Long getServiceOfferingId() { + return serviceOfferingId; + } + + @Override + public String getOtherDeployParams() { + return otherDeployParams; + } + + public void setOtherDeployParams(String otherDeployParams) { + this.otherDeployParams = otherDeployParams; + } + + @Override + public List> getCounterParams() { + List> paramsList = new ArrayList>(); + if (counterParams != null) { + String[] params = counterParams.split("[=&]"); + for (int i = 0; i < (params.length - 1); i = i + 2) { + paramsList.add(new Pair(params[i], params[i + 1])); + } + } + return paramsList; + } + + public void setCounterParams(String counterParam) { + this.counterParams = counterParam; + } + + public void setCounterParamsForUpdate(Map counterParamList) { + StringBuilder sb = new StringBuilder(""); + boolean isFirstParam = true; + if (counterParamList != null) { + Iterator> iter = counterParamList.values().iterator(); + while (iter.hasNext()) { + HashMap paramKVpair = iter.next(); + if (!isFirstParam) { + sb.append("&"); + } + String paramName = paramKVpair.get("name"); + String paramValue = paramKVpair.get("value"); + sb.append(paramName + "=" + paramValue); + isFirstParam = false; + } + } + /* + * setCounterParams(String counterParam)'s String param is caught by UpdateBuilder and stored in an internal + * list. + * Which is used later to update the db. The variables in a VO object is not used to update the db. + * Hence calling the function which is intercepted. + */ + setCounterParams(sb.toString()); + } + + @Override + public String getUuid() { + return uuid; + } + + public void setAutoscaleUserId(long autoscaleUserId) { + this.autoscaleUserId = autoscaleUserId; + } + + @Override + public Long getZoneId() { + return zoneId; + } + + @Override + public long getAccountId() { + return accountId; + } + + @Override + public long getDomainId() { + return domainId; + } + + @Override + public long getId() { + return id; + } + + @Override + public Integer getDestroyVmGraceperiod() { + return destroyVmGraceperiod; + } + + public void setDestroyVmGraceperiod(Integer destroyVmGraceperiod) { + this.destroyVmGraceperiod = destroyVmGraceperiod; + } + + @Override + public long getAutoScaleUserId() { + return autoscaleUserId; + } +} http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c11dbad9/engine/schema/src/com/cloud/network/as/ConditionVO.java ---------------------------------------------------------------------- diff --git a/engine/schema/src/com/cloud/network/as/ConditionVO.java b/engine/schema/src/com/cloud/network/as/ConditionVO.java new file mode 100644 index 0000000..bbae72f --- /dev/null +++ b/engine/schema/src/com/cloud/network/as/ConditionVO.java @@ -0,0 +1,129 @@ +// 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.network.as; + +import java.util.Date; +import java.util.UUID; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + +import org.apache.cloudstack.api.Identity; +import com.cloud.utils.db.GenericDao; +import org.apache.cloudstack.api.InternalIdentity; + +@Entity +@Table(name = "conditions") +public class ConditionVO implements Condition, Identity, InternalIdentity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") + private long id; + + @Column(name = "counter_id") + private long counterid; + + @Column(name = "threshold") + private long threshold; + + @Column(name = "relational_operator") + @Enumerated(value = EnumType.STRING) + private Operator relationalOperator; + + @Column(name = "domain_id") + protected long domainId; + + @Column(name = "account_id") + protected long accountId; + + @Column(name = "uuid") + private String uuid; + + @Column(name = GenericDao.REMOVED_COLUMN) + Date removed; + + @Column(name = GenericDao.CREATED_COLUMN) + Date created; + + public ConditionVO() { + } + + public ConditionVO(long counterid, long threshold, long accountId, long domainId, Operator relationalOperator) { + this.counterid = counterid; + this.threshold = threshold; + this.relationalOperator = relationalOperator; + this.accountId = accountId; + this.domainId = domainId; + this.uuid = UUID.randomUUID().toString(); + } + + public Date getCreated() { + return created; + } + + @Override + public long getId() { + return id; + } + + @Override + public String toString() { + return new StringBuilder("Condition[").append("id-").append(id).append("]").toString(); + } + + @Override + public long getCounterid() { + return counterid; + } + + @Override + public long getThreshold() { + return threshold; + } + + @Override + public Operator getRelationalOperator() { + return relationalOperator; + } + + @Override + public long getAccountId() { + return accountId; + } + + @Override + public long getDomainId() { + return domainId; + } + + @Override + public String getUuid() { + return this.uuid; + } + + public Date getRemoved() { + return removed; + } +} http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c11dbad9/engine/schema/src/com/cloud/network/as/CounterVO.java ---------------------------------------------------------------------- diff --git a/engine/schema/src/com/cloud/network/as/CounterVO.java b/engine/schema/src/com/cloud/network/as/CounterVO.java new file mode 100644 index 0000000..b7b03f7 --- /dev/null +++ b/engine/schema/src/com/cloud/network/as/CounterVO.java @@ -0,0 +1,111 @@ +// 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.network.as; + +import java.util.Date; +import java.util.UUID; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + +import org.apache.cloudstack.api.Identity; +import com.cloud.utils.db.GenericDao; +import org.apache.cloudstack.api.InternalIdentity; + +@Entity +@Table(name = "counter") +public class CounterVO implements Counter, Identity, InternalIdentity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") + private long id; + + @Column(name = "source") + @Enumerated(value = EnumType.STRING) + private Source source; + + @Column(name = "name") + private String name; + + @Column(name = "value") + private String value; + + @Column(name = "uuid") + private String uuid; + + @Column(name = GenericDao.REMOVED_COLUMN) + Date removed; + + @Column(name = GenericDao.CREATED_COLUMN) + Date created; + + public CounterVO() { + } + + public CounterVO(Source source, String name, String value) { + this.source = source; + this.name = name; + this.value = value; + this.uuid = UUID.randomUUID().toString(); + } + + @Override + public String toString() { + return new StringBuilder("Counter[").append("id-").append(id).append("]").toString(); + } + + @Override + public String getName() { + return name; + } + + @Override + public String getValue() { + return value; + } + + @Override + public Source getSource() { + return source; + } + + @Override + public long getId() { + return id; + } + + @Override + public String getUuid() { + return this.uuid; + } + + public Date getRemoved() { + return removed; + } + + public Date getCreated() { + return created; + } +} http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c11dbad9/engine/schema/src/com/cloud/network/as/dao/AutoScalePolicyConditionMapDao.java ---------------------------------------------------------------------- diff --git a/engine/schema/src/com/cloud/network/as/dao/AutoScalePolicyConditionMapDao.java b/engine/schema/src/com/cloud/network/as/dao/AutoScalePolicyConditionMapDao.java new file mode 100644 index 0000000..3025198 --- /dev/null +++ b/engine/schema/src/com/cloud/network/as/dao/AutoScalePolicyConditionMapDao.java @@ -0,0 +1,28 @@ +// 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.network.as.dao; + +import java.util.List; + +import com.cloud.network.as.AutoScalePolicyConditionMapVO; +import com.cloud.utils.db.GenericDao; + +public interface AutoScalePolicyConditionMapDao extends GenericDao { + List listByAll(Long policyId, Long conditionId); + public boolean isConditionInUse(Long conditionId); + boolean removeByAutoScalePolicyId(long id); +} http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c11dbad9/engine/schema/src/com/cloud/network/as/dao/AutoScalePolicyConditionMapDaoImpl.java ---------------------------------------------------------------------- diff --git a/engine/schema/src/com/cloud/network/as/dao/AutoScalePolicyConditionMapDaoImpl.java b/engine/schema/src/com/cloud/network/as/dao/AutoScalePolicyConditionMapDaoImpl.java new file mode 100644 index 0000000..00fee3d --- /dev/null +++ b/engine/schema/src/com/cloud/network/as/dao/AutoScalePolicyConditionMapDaoImpl.java @@ -0,0 +1,61 @@ +// 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.network.as.dao; + +import java.util.List; + +import javax.ejb.Local; + +import org.springframework.stereotype.Component; + +import com.cloud.network.as.AutoScalePolicyConditionMapVO; +import com.cloud.utils.db.GenericDaoBase; +import com.cloud.utils.db.SearchCriteria; + +@Component +@Local(value={AutoScalePolicyConditionMapDao.class}) +public class AutoScalePolicyConditionMapDaoImpl extends GenericDaoBase implements AutoScalePolicyConditionMapDao { + + private SearchCriteria getSearchCriteria(Long policyId, Long conditionId) + { + SearchCriteria sc = createSearchCriteria(); + + if(policyId != null) + sc.addAnd("policyId", SearchCriteria.Op.EQ, policyId); + + if(conditionId != null) + sc.addAnd("conditionId", SearchCriteria.Op.EQ, conditionId); + + return sc; + } + + @Override + public List listByAll(Long policyId, Long conditionId) { + return listBy(getSearchCriteria(policyId, conditionId)); + } + + public boolean isConditionInUse(Long conditionId) { + return findOneBy(getSearchCriteria(null, conditionId)) != null; + } + + @Override + public boolean removeByAutoScalePolicyId(long policyId) { + SearchCriteria sc = createSearchCriteria(); + sc.addAnd("policyId", SearchCriteria.Op.EQ, policyId); + return expunge(sc) > 0; + } +} http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c11dbad9/engine/schema/src/com/cloud/network/as/dao/AutoScalePolicyDao.java ---------------------------------------------------------------------- diff --git a/engine/schema/src/com/cloud/network/as/dao/AutoScalePolicyDao.java b/engine/schema/src/com/cloud/network/as/dao/AutoScalePolicyDao.java new file mode 100644 index 0000000..0cc2d27 --- /dev/null +++ b/engine/schema/src/com/cloud/network/as/dao/AutoScalePolicyDao.java @@ -0,0 +1,24 @@ +// 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.network.as.dao; + +import com.cloud.network.as.AutoScalePolicyVO; +import com.cloud.utils.db.GenericDao; + +public interface AutoScalePolicyDao extends GenericDao { + int removeByAccountId(long accountId); +} http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c11dbad9/engine/schema/src/com/cloud/network/as/dao/AutoScalePolicyDaoImpl.java ---------------------------------------------------------------------- diff --git a/engine/schema/src/com/cloud/network/as/dao/AutoScalePolicyDaoImpl.java b/engine/schema/src/com/cloud/network/as/dao/AutoScalePolicyDaoImpl.java new file mode 100644 index 0000000..796a9c3 --- /dev/null +++ b/engine/schema/src/com/cloud/network/as/dao/AutoScalePolicyDaoImpl.java @@ -0,0 +1,38 @@ +// 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.network.as.dao; + +import javax.ejb.Local; + +import org.springframework.stereotype.Component; + +import com.cloud.network.as.AutoScalePolicyVO; +import com.cloud.utils.db.GenericDaoBase; +import com.cloud.utils.db.SearchCriteria; + +@Component +@Local(value = { AutoScalePolicyDao.class }) +public class AutoScalePolicyDaoImpl extends GenericDaoBase implements AutoScalePolicyDao { + + public int removeByAccountId(long accountId) { + SearchCriteria sc = createSearchCriteria(); + + sc.addAnd("accountId", SearchCriteria.Op.EQ, accountId); + + return remove(sc); + } +} http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c11dbad9/engine/schema/src/com/cloud/network/as/dao/AutoScaleVmGroupDao.java ---------------------------------------------------------------------- diff --git a/engine/schema/src/com/cloud/network/as/dao/AutoScaleVmGroupDao.java b/engine/schema/src/com/cloud/network/as/dao/AutoScaleVmGroupDao.java new file mode 100644 index 0000000..3fc8a5b --- /dev/null +++ b/engine/schema/src/com/cloud/network/as/dao/AutoScaleVmGroupDao.java @@ -0,0 +1,28 @@ +// 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.network.as.dao; + +import java.util.List; + +import com.cloud.network.as.AutoScaleVmGroupVO; +import com.cloud.utils.db.GenericDao; + +public interface AutoScaleVmGroupDao extends GenericDao { + List listByAll(Long loadBalancerId, Long profileId); + boolean isProfileInUse(long profileId); + boolean isAutoScaleLoadBalancer(Long loadBalancerId); +} http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c11dbad9/engine/schema/src/com/cloud/network/as/dao/AutoScaleVmGroupDaoImpl.java ---------------------------------------------------------------------- diff --git a/engine/schema/src/com/cloud/network/as/dao/AutoScaleVmGroupDaoImpl.java b/engine/schema/src/com/cloud/network/as/dao/AutoScaleVmGroupDaoImpl.java new file mode 100644 index 0000000..4ddd572 --- /dev/null +++ b/engine/schema/src/com/cloud/network/as/dao/AutoScaleVmGroupDaoImpl.java @@ -0,0 +1,65 @@ +// 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.network.as.dao; + +import java.util.List; + +import javax.ejb.Local; + +import org.springframework.stereotype.Component; + +import com.cloud.network.as.AutoScaleVmGroupVO; +import com.cloud.utils.db.GenericDaoBase; +import com.cloud.utils.db.GenericSearchBuilder; +import com.cloud.utils.db.SearchCriteria; +import com.cloud.utils.db.SearchCriteria.Func; + +@Component +@Local(value = { AutoScaleVmGroupDao.class }) +public class AutoScaleVmGroupDaoImpl extends GenericDaoBase implements AutoScaleVmGroupDao { + + @Override + public List listByAll(Long loadBalancerId, Long profileId) { + SearchCriteria sc = createSearchCriteria(); + + if(loadBalancerId != null) + sc.addAnd("loadBalancerId", SearchCriteria.Op.EQ, loadBalancerId); + + if(profileId != null) + sc.addAnd("profileId", SearchCriteria.Op.EQ, profileId); + + return listBy(sc); + } + + @Override + public boolean isProfileInUse(long profileId) { + SearchCriteria sc = createSearchCriteria(); + sc.addAnd("profileId", SearchCriteria.Op.EQ, profileId); + return findOneBy(sc) != null; + } + + @Override + public boolean isAutoScaleLoadBalancer(Long loadBalancerId) { + GenericSearchBuilder CountByAccount = createSearchBuilder(Long.class); + CountByAccount.select(null, Func.COUNT, null); + CountByAccount.and("loadBalancerId", CountByAccount.entity().getLoadBalancerId(), SearchCriteria.Op.EQ); + + SearchCriteria sc = CountByAccount.create(); + sc.setParameters("loadBalancerId", loadBalancerId); + return customSearch(sc, null).get(0) > 0; + } +} http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c11dbad9/engine/schema/src/com/cloud/network/as/dao/AutoScaleVmGroupPolicyMapDao.java ---------------------------------------------------------------------- diff --git a/engine/schema/src/com/cloud/network/as/dao/AutoScaleVmGroupPolicyMapDao.java b/engine/schema/src/com/cloud/network/as/dao/AutoScaleVmGroupPolicyMapDao.java new file mode 100644 index 0000000..41d91f7 --- /dev/null +++ b/engine/schema/src/com/cloud/network/as/dao/AutoScaleVmGroupPolicyMapDao.java @@ -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.network.as.dao; + +import java.util.List; + +import com.cloud.network.as.AutoScaleVmGroupPolicyMapVO; +import com.cloud.utils.db.GenericDao; + +public interface AutoScaleVmGroupPolicyMapDao extends GenericDao { + boolean removeByGroupId(long vmGroupId); + boolean removeByGroupAndPolicies(long vmGroupId, List bakupPolicyIds); + List listByVmGroupId(long vmGroupId); + List listByPolicyId(long policyId); + public boolean isAutoScalePolicyInUse(long policyId); +} http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c11dbad9/engine/schema/src/com/cloud/network/as/dao/AutoScaleVmGroupPolicyMapDaoImpl.java ---------------------------------------------------------------------- diff --git a/engine/schema/src/com/cloud/network/as/dao/AutoScaleVmGroupPolicyMapDaoImpl.java b/engine/schema/src/com/cloud/network/as/dao/AutoScaleVmGroupPolicyMapDaoImpl.java new file mode 100644 index 0000000..ffb3dbc --- /dev/null +++ b/engine/schema/src/com/cloud/network/as/dao/AutoScaleVmGroupPolicyMapDaoImpl.java @@ -0,0 +1,77 @@ +// 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.network.as.dao; + +import java.util.List; + +import javax.ejb.Local; + +import org.springframework.stereotype.Component; + +import com.cloud.network.as.AutoScaleVmGroupPolicyMapVO; +import com.cloud.utils.db.GenericDaoBase; +import com.cloud.utils.db.SearchBuilder; +import com.cloud.utils.db.SearchCriteria; +import com.cloud.utils.db.SearchCriteria.Op; + +@Component +@Local(value={AutoScaleVmGroupPolicyMapDao.class}) +public class AutoScaleVmGroupPolicyMapDaoImpl extends GenericDaoBase implements AutoScaleVmGroupPolicyMapDao { + + @Override + public boolean removeByGroupId(long vmGroupId) { + SearchCriteria sc = createSearchCriteria(); + sc.addAnd("vmGroupId", SearchCriteria.Op.EQ, vmGroupId); + + return expunge(sc) > 0; + } + + @Override + public boolean removeByGroupAndPolicies(long vmGroupId, List policyIds) { + SearchBuilder policySearch = createSearchBuilder(); + policySearch.and("vmGroupId", policySearch.entity().getVmGroupId(), Op.EQ); + policySearch.and("policyIds", policySearch.entity().getPolicyId(), Op.IN); + policySearch.done(); + SearchCriteria sc = policySearch.create(); + sc.setParameters("vmGroupId", vmGroupId); + sc.setParameters("policyIds", policyIds); + return expunge(sc) > 0; + } + + @Override + public List listByVmGroupId(long vmGroupId) { + SearchCriteria sc = createSearchCriteria(); + sc.addAnd("vmGroupId", SearchCriteria.Op.EQ, vmGroupId); + return listBy(sc); + } + + @Override + public List listByPolicyId(long policyId) { + SearchCriteria sc = createSearchCriteria(); + sc.addAnd("policyId", SearchCriteria.Op.EQ, policyId); + + return listBy(sc); + } + + @Override + public boolean isAutoScalePolicyInUse(long policyId) { + SearchCriteria sc = createSearchCriteria(); + sc.addAnd("policyId", SearchCriteria.Op.EQ, policyId); + return findOneBy(sc) != null; + } + +} http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c11dbad9/engine/schema/src/com/cloud/network/as/dao/AutoScaleVmProfileDao.java ---------------------------------------------------------------------- diff --git a/engine/schema/src/com/cloud/network/as/dao/AutoScaleVmProfileDao.java b/engine/schema/src/com/cloud/network/as/dao/AutoScaleVmProfileDao.java new file mode 100644 index 0000000..0855bf7 --- /dev/null +++ b/engine/schema/src/com/cloud/network/as/dao/AutoScaleVmProfileDao.java @@ -0,0 +1,25 @@ +// 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.network.as.dao; + +import com.cloud.network.as.AutoScaleVmProfileVO; +import com.cloud.utils.db.GenericDao; + +public interface AutoScaleVmProfileDao extends GenericDao { + + int removeByAccountId(long accountId); +} http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c11dbad9/engine/schema/src/com/cloud/network/as/dao/AutoScaleVmProfileDaoImpl.java ---------------------------------------------------------------------- diff --git a/engine/schema/src/com/cloud/network/as/dao/AutoScaleVmProfileDaoImpl.java b/engine/schema/src/com/cloud/network/as/dao/AutoScaleVmProfileDaoImpl.java new file mode 100644 index 0000000..5d08491 --- /dev/null +++ b/engine/schema/src/com/cloud/network/as/dao/AutoScaleVmProfileDaoImpl.java @@ -0,0 +1,38 @@ +// 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.network.as.dao; + +import javax.ejb.Local; + +import org.springframework.stereotype.Component; + +import com.cloud.network.as.AutoScaleVmProfileVO; +import com.cloud.utils.db.GenericDaoBase; +import com.cloud.utils.db.SearchCriteria; + +@Component +@Local(value = { AutoScaleVmProfileDao.class }) +public class AutoScaleVmProfileDaoImpl extends GenericDaoBase implements AutoScaleVmProfileDao { + + @Override + public int removeByAccountId(long accountId) { + SearchCriteria sc = createSearchCriteria(); + sc.addAnd("accountId", SearchCriteria.Op.EQ, accountId); + + return remove(sc); + } +}