content: // 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.api.query.vo;
  
  import java.net.URI;
  import java.util.Date;
  
  import javax.persistence.Column;
  import javax.persistence.Convert;
  import javax.persistence.Entity;
  import javax.persistence.EnumType;
  import javax.persistence.Enumerated;
  import javax.persistence.Id;
  import javax.persistence.Table;
  
  import com.cloud.cpu.CPU;
  import com.cloud.host.Status;
  import com.cloud.hypervisor.Hypervisor;
  import com.cloud.network.Network.GuestType;
  import com.cloud.network.Networks.TrafficType;
  import com.cloud.network.router.VirtualRouter;
  import com.cloud.network.router.VirtualRouter.RedundantState;
  import com.cloud.resource.ResourceState;
  import com.cloud.user.Account;
  import com.cloud.utils.db.GenericDao;
  import com.cloud.vm.VirtualMachine;
  import com.cloud.vm.VirtualMachine.State;
  
  import org.apache.cloudstack.util.CPUArchConverter;
  import org.apache.cloudstack.util.HypervisorTypeConverter;
  
  @Entity
  @Table(name = "domain_router_view")
  public class DomainRouterJoinVO extends BaseViewVO implements ControlledViewEntity {
  
      @Id
      @Column(name = "id", updatable = false, nullable = false)
      private long id;
  
      @Column(name = "name", updatable = false, nullable = false, length = 255)
      private String name = null;
  
      @Column(name = "account_id")
      private long accountId;
  
      @Column(name = "account_uuid")
      private String accountUuid;
  
      @Column(name = "account_name")
      private String accountName = null;
  
      @Column(name = "account_type")
      @Enumerated(value = EnumType.ORDINAL)
      private Account.Type accountType;
  
      @Column(name = "domain_id")
      private long domainId;
  
      @Column(name = "domain_uuid")
      private String domainUuid;
  
      @Column(name = "domain_name")
      private String domainName = null;
  
      @Column(name = "domain_path")
      private String domainPath = null;
  
      /**
       * Note that state is intentionally missing the setter.  Any updates to
       * the state machine needs to go through the DAO object because someone
       * else could be updating it as well.
       */
      @Enumerated(value = EnumType.STRING)
      @Column(name = "state", updatable = true, nullable = false, length = 32)
      private State state = null;
  
      @Column(name = GenericDao.CREATED_COLUMN)
      private Date created;
  
      @Column(name = GenericDao.REMOVED_COLUMN)
      private Date removed;
  
      @Column(name = "instance_name", updatable = true, nullable = false)
      private String instanceName;
  
      @Column(name = "pod_id", updatable = true, nullable = false)
      private Long podId;
  
      @Column(name = "pod_uuid")
      private String podUuid;
  
      @Column(name = "data_center_id")
      private long dataCenterId;
  
      @Column(name = "data_center_uuid")
      private String dataCenterUuid;
  
      @Column(name = "data_center_name")
      private String dataCenterName = null;
  
      @Column(name = "cluster_id")
      private long clusterId;
  
      @Column(name = "dns1")
      private String dns1 = null;
  
      @Column(name = "dns2")
      private String dns2 = null;
  
      @Column(name = "ip6_dns1")
      private String ip6Dns1 = null;
  
      @Column(name = "ip6_dns2")
      private String ip6Dns2 = null;
  
      @Column(name = "host_id", updatable = true, nullable = true)
      private Long hostId;
  
      @Column(name = "host_uuid")
      private String hostUuid;
  
      @Column(name = "host_name", nullable = false)
      private String hostName;
  
      @Column(name = "host_status")
      private Status hostStatus;
  
      @Column(name = "host_resource_state")
      private ResourceState hostResourceState;
  
      @Column(name="hypervisor_type")
      @Convert(converter = HypervisorTypeConverter.class)
      private Hypervisor.HypervisorType hypervisorType;
  
      @Column(name="arch")
      @Convert(converter = CPUArchConverter.class)
      private CPU.CPUArch arch;
  
      @Column(name = "template_id", updatable = true, nullable = true, length = 17)
      private long templateId;
  
      @Column(name = "template_uuid")
      private String templateUuid;
  
      @Column(name = "service_offering_id")
      private long serviceOfferingId;
  
      @Column(name = "service_offering_uuid")
      private String serviceOfferingUuid;
  
      @Column(name = "service_offering_name")
      private String serviceOfferingName;
  
      @Column(name = "vpc_id")
      private long vpcId;
  
      @Column(name = "vpc_uuid")
      private String vpcUuid;
  
      @Column(name = "vpc_name")
      private String vpcName;
  
      @Column(name = "nic_id")
      private long nicId;
  
      @Column(name = "nic_uuid")
      private String nicUuid;
  
      @Column(name = "is_default_nic")
      private boolean isDefaultNic;
  
      @Column(name = "ip_address")
      private String ipAddress;
  
      @Column(name = "gateway")
      private String gateway;
  
      @Column(name = "netmask")
      private String netmask;
  
      @Column(name = "ip6_address")
      private String ip6Address;
  
      @Column(name = "ip6_gateway")
      private String ip6Gateway;
  
      @Column(name = "ip6_cidr")
      private String ip6Cidr;
  
      @Column(name = "mac_address")
      private String macAddress;
  
      @Column(name = "broadcast_uri")
      private URI broadcastUri;
  
      @Column(name = "isolation_uri")
      private URI isolationUri;
  
      @Column(name = "network_id")
      private long networkId;
  
      @Column(name = "network_uuid")
      private String networkUuid;
  
      @Column(name = "network_name")
      private String networkName;
  
      @Column(name = "network_domain")
      private String networkDomain;
  
      @Column(name = "traffic_type")
      @Enumerated(value = EnumType.STRING)
      private TrafficType trafficType;
  
      @Column(name = "project_id")
      private long projectId;
  
      @Column(name = "project_uuid")
      private String projectUuid;
  
      @Column(name = "project_name")
      private String projectName;
  
      @Column(name = "job_id")
      private Long jobId;
  
      @Column(name = "job_uuid")
      private String jobUuid;
  
      @Column(name = "job_status")
      private int jobStatus;
  
      @Column(name = "uuid")
      private String uuid;
  
      @Column(name = "template_version")
      private String templateVersion;
  
      @Column(name = "scripts_version")
      private String scriptsVersion;
  
      @Column(name = "redundant_state")
      @Enumerated(EnumType.STRING)
      private RedundantState redundantState;
  
      @Column(name = "is_redundant_router")
      boolean isRedundantRouter;
  
      @Column(name = "guest_type")
      @Enumerated(value = EnumType.STRING)
      private GuestType guestType;
  
      @Column(name = "role")
      @Enumerated(value = EnumType.STRING)
      private VirtualRouter.Role role;
  
      @Column(name = "software_version")
      private String softwareVersion;
  
      @Column(name = "mtu")
      private Integer mtu;
  
      public DomainRouterJoinVO() {
      }
  
      @Override
      public long getId() {
          return id;
      }
  
      @Override
      public String getUuid() {
          return uuid;
      }
  
      public String getName() {
          return name;
      }
  
      @Override
      public long getAccountId() {
          return accountId;
      }
  
      @Override
      public String getAccountUuid() {
          return accountUuid;
      }
  
      @Override
      public String getAccountName() {
          return accountName;
      }
  
      @Override
      public Account.Type getAccountType() {
          return accountType;
      }
  
      @Override
      public long getDomainId() {
          return domainId;
      }
  
      @Override
      public String getDomainUuid() {
          return domainUuid;
      }
  
      @Override
      public String getDomainName() {
          return domainName;
      }
  
      @Override
      public String getDomainPath() {
          return domainPath;
      }
  
      public State getState() {
          return state;
      }
  
      public Date getCreated() {
          return created;
      }
  
      public Date getRemoved() {
          return removed;
      }
  
      public String getInstanceName() {
          return instanceName;
      }
  
      public String getPodUuid() {
          return podUuid;
      }
  
      public String getDataCenterUuid() {
          return dataCenterUuid;
      }
  
      public String getDataCenterName() {
          return dataCenterName;
      }
  
      public Long getHostId() {
          return hostId;
      }
  
      public String getHostUuid() {
          return hostUuid;
      }
  
      public String getHostName() {
          return hostName;
      }
  
      public Status getHostStatus() {
          return hostStatus;
      }
  
      public ResourceState getHostResourceState() {
          return hostResourceState;
      }
  
      public Hypervisor.HypervisorType getHypervisorType() {
          return hypervisorType;
      }
  
      public CPU.CPUArch getArch() {
          return arch;
      }
  
      public Long getClusterId() {
          return clusterId;
      }
  
      public long getTemplateId() {
          return templateId;
      }
  
      public String getTemplateUuid() {
          return templateUuid;
      }
  
      public String getServiceOfferingUuid() {
          return serviceOfferingUuid;
      }
  
      public String getServiceOfferingName() {
          return serviceOfferingName;
      }
  
      public long getVpcId() {
          return vpcId;
      }
  
      public String getVpcName() {
          return vpcName;
      }
  
      public long getNicId() {
          return nicId;
      }
  
      public boolean isDefaultNic() {
          return isDefaultNic;
      }
  
      public String getIpAddress() {
          return ipAddress;
      }
  
      public String getGateway() {
          return gateway;
      }
  
      public String getNetmask() {
          return netmask;
      }
  
      public String getMacAddress() {
          return macAddress;
      }
  
      public URI getBroadcastUri() {
          return broadcastUri;
      }
  
      public URI getIsolationUri() {
          return isolationUri;
      }
  
      public long getNetworkId() {
          return networkId;
      }
  
      public String getNetworkName() {
          return networkName;
      }
  
      public String getNetworkDomain() {
          return networkDomain;
      }
  
      public TrafficType getTrafficType() {
          return trafficType;
      }
  
      public long getServiceOfferingId() {
          return serviceOfferingId;
      }
  
      public long getProjectId() {
          return projectId;
      }
  
      @Override
      public String getProjectUuid() {
          return projectUuid;
      }
  
      @Override
      public String getProjectName() {
          return projectName;
      }
  
      public String getVpcUuid() {
          return vpcUuid;
      }
  
      public String getNicUuid() {
          return nicUuid;
      }
  
      public String getNetworkUuid() {
          return networkUuid;
      }
  
      public Long getJobId() {
          return jobId;
      }
  
      public String getJobUuid() {
          return jobUuid;
      }
  
      public int getJobStatus() {
          return jobStatus;
      }
  
      public Long getPodId() {
          return podId;
      }
  
      public long getDataCenterId() {
          return dataCenterId;
      }
  
      public String getDns1() {
          return dns1;
      }
  
      public String getDns2() {
          return dns2;
      }
  
      public String getTemplateVersion() {
          return templateVersion;
      }
  
      public String getScriptsVersion() {
          return scriptsVersion;
      }
  
      public RedundantState getRedundantState() {
          return redundantState;
      }
  
      public boolean isRedundantRouter() {
          return isRedundantRouter;
      }
  
      public GuestType getGuestType() {
          return guestType;
      }
  
      public String getIp6Address() {
          return ip6Address;
      }
  
      public String getIp6Gateway() {
          return ip6Gateway;
      }
  
      public String getIp6Cidr() {
          return ip6Cidr;
      }
  
      public String getIp6Dns1() {
          return ip6Dns1;
      }
  
      public String getIp6Dns2() {
          return ip6Dns2;
      }
  
      public VirtualRouter.Role getRole() {
          return role;
      }
  
      @Override
      public Class<?> getEntityType() {
          return VirtualMachine.class;
      }
  
      public String getSoftwareVersion() {
          return softwareVersion;
      }
  
      public Integer getMtu() {
          return mtu;
      }
  }
  