예제 #1
0
 def get_credentials(self):
     os.environ['OS_REGION_NAME'] = self.get_region()
     osclients = OpenStackClients()
     keystone = osclients.get_keystoneclient()
     try:
         self.keystone.domains.find(name="default")
         return keystone
     except Exception as e:
         os.environ['OS_USER_DOMAIN_NAME'] = "Default"
         os.environ['OS_PROJECT_DOMAIN_ID'] = "default"
         os.environ['OS_REGION_NAME'] = "Spain2"
         osclients = OpenStackClients()
         return osclients.get_keystoneclient()
예제 #2
0
 def __init__(self):
     """constructor"""
     self.osclients = OpenStackClients()
     self.keystone = self.osclients.get_keystoneclient()
     self.change_domain_name()
     self.password_changer = PasswordChanger(self.osclients)
     os.environ['OS_REGION_NAME'] = os.environ['REGION']
     self.region_exists(os.environ['REGION'])
예제 #3
0
    def __init__(self):
        """constructor, build the list of basic users included in
        users_to_delete.txt"""
        basic_type = settings.BASIC_ROLE_ID
        self.ids = set(line.strip()
                       for line in open('users_to_delete.txt').readlines())

        osclients = OpenStackClients()

        keystone = osclients.get_keystoneclientv3()
        self.users_basic = set(
            asig.user['id']
            for asig in keystone.role_assignments.list(domain='default')
            if asig.role['id'] == basic_type and asig.user['id'] in self.ids)
예제 #4
0
    def __init__(self, target):
        """Create a new Facade for the specified target (a target is shared
        between regions using the same credential)"""
        self.osclients = OpenStackClients(target['keystone_url'])
        self.osclients.set_credential(target['user'], target['password'],
                                      target['tenant'])
        if target.get('use_keystone_v3', False):
            self.osclients.set_keystone_version(True)
        else:
            self.osclients.set_keystone_version(False)

        self.session = self.osclients.get_session()

        self.target = target
        # This is a default value
        self.images_dir = '/var/lib/glance/images'
        self.logger = logger_cli
예제 #5
0
    def __init__(self,
                 persistence_dir='~/openstackmap',
                 region=None,
                 auth_url=None,
                 objects_strategy=USE_CACHE_OBJECTS,
                 auto_load=True):
        """
        Constructor
        :param persistence_dir: The path where the data is saved. Ignored if
           objects_strategy is DIRECT_OBJECTS or NO_CACHE_OBJECTS
        :param region: the initial region (if undefined, use OS_REGION_NAME)
        :param auth_url: the keystone URI
        :param objects_strategy: sets the strategy about the object maps
            contained here. It can be:
         * DIRECT_OBJECTS is using the objects as they are got from
           the API. Be careful because methods as delete are available! The
           objects are not cached.
         * NO_CACHE_OBJECTS is using the objects converted to dictionaries, so
           methods to do operations are not available. The objects are not
           cached.
         * REFRESH_OBJECTS is using the objects converted to dictionaries. The
           objects are cached: the new version replace the old one.
         * USE_CACHE_OBJECTS is using the objects converted to dictionaries. If
           a cached copy of the objects are available, it is used.
         * USE_CACHE_OBJECTS_ONLY is using the objects converted to dictionaries.
           This strategy used cached objects only. It never contacts with the
           servers, even when the object is not available in the local cache.

        :param auto_load: if True, invoke self.load_all()
         Note that neutron objects returned by the API are already dictionaries
        """

        self.logger = logging.getLogger(__name__)

        if auth_url:
            self.osclients = OpenStackClients(auth_url=auth_url)
        else:
            self.osclients = OpenStackClients()

        if region:
            self.osclients.set_region(region)
        else:
            if 'OS_REGION_NAME' not in env:
                raise Exception('Region parameter must be provided or '
                                'OS_REGION_NAME variable must be defined.')
            else:
                region = env['OS_REGION_NAME']

        if 'KEYSTONE_ADMIN_ENDPOINT' in os.environ:
            self.osclients.override_endpoint(
                'identity', self.osclients.region, 'admin',
                os.environ['KEYSTONE_ADMIN_ENDPOINT'])

        self.objects_strategy = objects_strategy

        self.persistence_dir = os.path.expanduser(persistence_dir)
        self.pers_region = self.persistence_dir + '/' + region
        self.pers_keystone = self.persistence_dir + '/keystone'

        if objects_strategy not in (OpenStackMap.DIRECT_OBJECTS,
                                    OpenStackMap.NO_CACHE_OBJECTS):
            if not os.path.exists(self.persistence_dir):
                os.mkdir(self.persistence_dir)

            if not os.path.exists(self.pers_keystone):
                os.mkdir(self.pers_keystone)

            if not os.path.exists(self.pers_region):
                os.mkdir(self.pers_region)

        self._init_resource_maps()

        if auto_load:
            self.load_all()

        self.region_map = dict()
예제 #6
0
etckeystone_path = '/home/ubuntu/idm/keystone/etc/keystone.conf'

# reset the password
p2 = Popen(["curl", "http://169.254.169.254/openstack/latest/meta_data.json"],
           stdout=PIPE)
metadatajson, err = p2.communicate()
meta = json.loads(metadatajson)["meta"]
keystone_ip = meta["keystone_ip"]
region = meta["Region"]
region2 = meta["region_keystone"]
if region2:
    os.environ['OS_REGION_NAME'] = region2

wait_net_service(keystone_ip, 5000, timeout=720)

osclients = OpenStackClients('http://{0}:5000/v3/'.format(keystone_ip))

osclients.set_credential('idm', 'idm', 'idm')

# create idm region user

password_changer = PasswordChanger(osclients)
idm = password_changer.get_user_byname("idm")
idm = password_changer.get_user_byname('idm')
# new_password = password_changer.reset_password(idm)
new_password = '******'

credential = """export OS_AUTH_URL=http://{0}:5000/v3/
export OS_AUTH_URL_V2=http://{0}:5000/v2.0/
export OS_USERNAME={2}
export OS_TENANT_NAME=idm
예제 #7
0
 def return_credentails(self):
     os.environ['OS_USER_DOMAIN_NAME'] = "default"
     os.environ['OS_PROJECT_DOMAIN_NAME'] = "default"
     os.environ['OS_REGION_NAME'] = os.environ['REGION']
     osclients = OpenStackClients()
     return osclients.get_keystoneclient()