/** * 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 org.apache.ambari.server.orm.entities; import java.util.Collection; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.OneToMany; import javax.persistence.Table; import javax.persistence.TableGenerator; import org.apache.ambari.server.view.DefaultMasker; import org.apache.ambari.view.MaskException; import org.apache.ambari.view.Masker; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Remote Ambari Managed Cluster */ @Table(name = "remoteambaricluster") @TableGenerator(name = "remote_cluster_id_generator", table = "ambari_sequences", pkColumnName = "sequence_name", valueColumnName = "sequence_value" , pkColumnValue = "remote_cluster_id_seq" , initialValue = 1 ) @NamedQueries({ @NamedQuery(name = "allRemoteAmbariClusters", query = "SELECT remoteAmbariCluster FROM RemoteAmbariClusterEntity remoteambaricluster"), @NamedQuery(name = "remoteAmbariClusterByName", query = "SELECT remoteAmbariCluster " + "FROM RemoteAmbariClusterEntity remoteAmbariCluster " + "WHERE remoteAmbariCluster.name=:clusterName"), @NamedQuery(name = "remoteAmbariClusterById", query = "SELECT remoteAmbariCluster " + "FROM RemoteAmbariClusterEntity remoteAmbariCluster " + "WHERE remoteAmbariCluster.id=:clusterId")}) @Entity public class RemoteAmbariClusterEntity { /** * The logger. */ protected final static Logger LOG = LoggerFactory.getLogger(RemoteAmbariClusterEntity.class); @Id @Column(name = "cluster_id", nullable = false) @GeneratedValue(strategy = GenerationType.TABLE, generator = "remote_cluster_id_generator") private Long id; @Column(name = "name", nullable = false, insertable = true, updatable = true) private String name; @Column(name = "url", nullable = false, insertable = true, updatable = true) private String url; @Column(name = "username", nullable = false, insertable = true, updatable = true) private String username; @Column(name = "password", nullable = false, insertable = true, updatable = true) private String password; @OneToMany(cascade = CascadeType.ALL, mappedBy = "cluster") private Collection<RemoteAmbariClusterServiceEntity> services; private static Masker masker = new DefaultMasker(); /** * Get the id * * @return id */ public Long getId() { return id; } /** * Set the id of cluster * * @param id */ public void setId(Long id) { this.id = id; } /** * Get the name of cluster * * @return name */ public String getName() { return name; } /** * Set the cluster name * * @param name */ public void setName(String name) { this.name = name; } /** * Get the cluster url * * @return url */ public String getUrl() { return url; } /** * Set the url * * @param url */ public void setUrl(String url) { this.url = url; } /** * Get username * * @return username */ public String getUsername() { return username; } /** * Set the username * * @param username */ public void setUsername(String username) { this.username = username; } /** * Get the password * * @return password */ public String getPassword() { try { return masker.unmask(password); } catch (MaskException e) { // Log exception LOG.error("Unable to unmask password for Remote Cluster : "+name , e); } return null; } /** * Set the password * * @param password * @throws MaskException */ public void setPassword(String password) throws MaskException { this.password = masker.mask(password); } /** * Get the services installed on the cluster * * @return services */ public Collection<RemoteAmbariClusterServiceEntity> getServices() { return services; } /** * Set the services installed on the cluster * * @param services */ public void setServices(Collection<RemoteAmbariClusterServiceEntity> services) { this.services = services; } }