# Copyright(c) 2016, Oracle and/or its affiliates. All Rights Reserved. # # Licensed 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. # from copy import copy from kolla_cli.common.utils import get_admin_user ANSIBLE_BECOME = 'ansible_become' ANSIBLE_SSH_USER = 'ansible_ssh_user' ANSIBLE_CONNECTION = 'ansible_connection' class HostGroup(object): class_version = 1 def __init__(self, name): self.name = name self.hostnames = [] self.vars = {} self.version = self.__class__.class_version def upgrade(self): pass def add_host(self, host): if host.name is not None and host.name not in self.hostnames: self.hostnames.append(host.name) def remove_host(self, host): if host.name in self.hostnames: self.hostnames.remove(host.name) def get_hostnames(self): return copy(self.hostnames) def get_vars(self): return self.vars.copy() def set_var(self, name, value): self.vars[name] = value def clear_var(self, name): if name in self.vars: del self.vars[name] def set_remote(self, remote_flag): self.set_var(ANSIBLE_BECOME, 'yes') if remote_flag: # set the ssh info for all the servers in the group self.set_var(ANSIBLE_SSH_USER, get_admin_user()) self.clear_var(ANSIBLE_CONNECTION) else: # remove ssh info, add local connection type self.set_var(ANSIBLE_CONNECTION, 'local') self.clear_var(ANSIBLE_SSH_USER)