예제 #1
0
    def create_org(cls):
        """Creates an org by the name specified in the config file.

        Skips creating one, if such an org already exists. Also stores the
        href of the org as class variable for future use.
        """
        cls._basic_check()
        system = System(
            cls._sys_admin_client,
            admin_resource=cls._sys_admin_client.get_admin())
        org_name = cls._config['vcd']['default_org_name']
        org_resource_list = cls._sys_admin_client.get_org_list()
        for org_resource in org_resource_list:
            if org_resource.get('name').lower() == org_name.lower():
                cls._logger.debug('Reusing existing org ' + org_name + '.')
                cls._org_href = org_resource.get('href')
                return
        cls._logger.debug('Creating new org ' + org_name)
        system.create_org(
            org_name=org_name, full_org_name=org_name, is_enabled=True)
        # The following contraption is required to get the non admin href of
        # the org. The result of create_org() contains the admin version of
        # the href, since we created the org as a sys admin.
        org_resource = cls._sys_admin_client.get_org_by_name(org_name)
        cls._org_href = org_resource.get('href')
    def Create(self, request, context):
        """
        # API used https://github.com/vmware/pyvcloud/blob/master/pyvcloud/vcd/system.py#L43
        """

        logging.basicConfig(level=logging.DEBUG)
        logging.info("__INIT__Create[org_plugin]")
        res = org_pb2.CreateOrgResult()
        res.created = False
        try:
            vref = VCDClientRef()
            client = vref.get_ref()
            sys_admin = client.get_admin()
            system = System(client, admin_resource=sys_admin)
            system.create_org(request.name, request.org_full_name,
                              request.is_enabled)
            logging.info("__DONE_Create[org_plugin]")
            res.created = True
            return res
        except Exception as e:
            error_message = '__ERROR_Create[org_plugin] failed  {0} '.format(
                request.name)
            logging.warn(error_message, e)
            context.set_code(grpc.StatusCode.INVALID_ARGUMENT)
            context.set_details(error_message)
            return res
예제 #3
0
    def test_04_create_org_ldap_settings_system(self):
        ''' Create organization with LDAP settings SYSTEM '''

        sys_admin = self.client.get_admin()
        system = System(self.client, admin_resource=sys_admin)

        # Test data
        (org_name, org_desc) = self.get_org_data()
        ldap_mode = 'SYSTEM'
        sys_users_ou = 'ou=Users,dc=example,dc=local'

        settings = OrgSettings()
        settings.set_org_ldap_settings( org_ldap_mode=ldap_mode,
                                        sys_users_ou=sys_users_ou
                                       )

        org = system.create_org(org_name,
                                org_desc,
                                settings=settings)
        ldap = org.Settings.OrgLdapSettings

        # Verifications
        assert org.get('name') == org_name
        assert ldap.OrgLdapMode.text == ldap_mode
        assert ldap.CustomUsersOu.text == sys_users_ou

        # Cleanup delete the organization
        system.delete_org(org_name, True, True)
예제 #4
0
    def test_03_create_org_vapp__template_lease_settings_not_default(self):
        ''' Create organization with vApp template lease setting non default values'''

        sys_admin = self.client.get_admin()
        system = System(self.client, admin_resource=sys_admin)

        # Test Data
        (org_name, org_desc) = self.get_org_data()
        vapp_lease_template_delete_on_storage = True
        vapp_lease_template_delete_on_storage_lease_expiration = 7200
        vapp_lease_delete_on_storage_lease_expiration = False
        vapp_lease_deployment_lease_seconds = 0
        vapp_lease_storage_lease_seconds = 0

        # Set up settings object
        settings = OrgSettings()
        settings.set_vapp_lease_settings(vapp_lease_delete_on_storage_lease_expiration,
                                         vapp_lease_deployment_lease_seconds,
                                         vapp_lease_storage_lease_seconds)
        settings.set_vapp_template_lease_settings(vapp_lease_template_delete_on_storage,
                                                  vapp_lease_template_delete_on_storage_lease_expiration)

        org = system.create_org(org_name,
                                org_desc,
                                settings=settings)

        assert org.get('name') == org_name

        vtls = org.Settings.VAppTemplateLeaseSettings
        assert vtls.DeleteOnStorageLeaseExpiration.text == str(vapp_lease_template_delete_on_storage).lower()
        assert vtls.StorageLeaseSeconds.text == str(vapp_lease_template_delete_on_storage_lease_expiration)

        # Cleanup delete the organization
        system.delete_org(org_name, True, True)
예제 #5
0
    def test_02_create_org_vapp_lease_settings_never_expire(self):
        ''' Create organization with lease never expire'''

        sys_admin = self.client.get_admin()
        system = System(self.client, admin_resource=sys_admin)

        # Test Data
        (org_name, org_desc) = self.get_org_data()
        vapp_lease_delete_on_storage_lease_expiration = False
        vapp_lease_deployment_lease_seconds = 0
        vapp_lease_storage_lease_seconds = 0

        # Set up settings object
        settings = OrgSettings()
        settings.set_vapp_lease_settings(vapp_lease_delete_on_storage_lease_expiration,
                                         vapp_lease_deployment_lease_seconds,
                                         vapp_lease_storage_lease_seconds)

        org = system.create_org(org_name,
                                org_desc,
                                settings=settings)

        assert org.get('name') == org_name

        vls = org.Settings.VAppLeaseSettings
        assert vls.DeleteOnStorageLeaseExpiration.text == str(vapp_lease_delete_on_storage_lease_expiration).lower()
        assert vls.DeploymentLeaseSeconds.text == str(vapp_lease_deployment_lease_seconds)
        assert vls.StorageLeaseSeconds.text ==  str(vapp_lease_storage_lease_seconds)

        # Cleanup delete the organization
        system.delete_org(org_name, True, True)
예제 #6
0
def create(ctx, name, full_name, enabled):
    try:
        client = ctx.obj['client']
        sys_admin_resource = client.get_admin()
        system = System(client, admin_resource=sys_admin_resource)
        result = system.create_org(name, full_name, enabled)
        stdout('Org \'%s\' is successfully created.' % result.get('name'), ctx)
    except Exception as e:
        stderr(e, ctx)
예제 #7
0
파일: org.py 프로젝트: vmware/vca-cli
def create(ctx, name, full_name, enabled):
    try:
        restore_session(ctx)
        client = ctx.obj['client']
        sys_admin_resource = client.get_admin()
        system = System(client, admin_resource=sys_admin_resource)
        result = system.create_org(name, full_name, enabled)
        stdout('Org \'%s\' is successfully created.' % result.get('name'), ctx)
    except Exception as e:
        stderr(e, ctx)
예제 #8
0
    def test_0000_setup(self):
        """Setup a Org required for other tests in this module.

        Create an Org as per the configuration stated above. Tests
        System.create_org() method.

        This test passes if org href is not None.
        """
        TestOrg._client = Environment.get_sys_admin_client()
        sys_admin_resource = TestOrg._client.get_admin()
        system = System(TestOrg._client, admin_resource=sys_admin_resource)
        result = system.create_org(TestOrg._new_org_name,
                                   TestOrg._new_org_full_name,
                                   TestOrg._new_org_enabled)
        TestOrg._new_org_admin_href = result.get('href')

        self.assertIsNotNone(TestOrg._new_org_admin_href)
예제 #9
0
파일: vcd_user.py 프로젝트: vmware/pyvcloud
    def test_0000_setup(self):
        """Setup a Org required for other tests in this module.

        Create an Org as per the configuration stated above. Tests
        System.create_org() method.

        This test passes if org href is not None.
        """
        TestUser._client = Environment.get_sys_admin_client()
        sys_admin_resource = TestUser._client.get_admin()
        system = System(TestUser._client, admin_resource=sys_admin_resource)
        result = system.create_org(TestUser._new_org_name,
                                   TestUser._new_org_full_name,
                                   TestUser._new_org_enabled)
        TestUser._new_org_admin_href = result.get('href')

        TestUser._org = Org(TestUser._client,
                            href=TestUser._new_org_admin_href)

        self.assertIsNotNone(TestUser._new_org_admin_href)
def create_org(client):
    logging.info("create org %s", str(client))
    sys_admin = client.get_admin()
    system = System(client, admin_resource=sys_admin)
    task = system.create_org("O2", "O2 ORG")
    print(type(task))
예제 #11
0
class VCDOrg(VcdAnsibleModule):
    def __init__(self, **kwargs):
        super(VCDOrg, self).__init__(**kwargs)
        sys_admin = self.client.get_admin()
        self.system = System(self.client, admin_resource=sys_admin)

    def manage_states(self):
        state = self.params.get('state')
        if state == "present":
            return self.create()

        if state == "absent":
            return self.delete()

        if state == "update":
            return self.update()

    def manage_operations(self):
        operation = self.params.get('operation')
        if operation == "read":
            return self.read()

    def create(self):
        org_name = self.params.get('org_name')
        full_name = self.params.get('full_name')
        is_enabled = self.params.get('is_enabled')
        response = dict()
        response['changed'] = False

        try:
            self.system.create_org(org_name, full_name, is_enabled)
            response['msg'] = 'Org {} has been created.'.format(org_name)
            response['changed'] = True
        except BadRequestException:
            response['warnings'] = 'Org {} is already present.'.format(
                org_name)

        return response

    def read(self):
        org_name = self.params.get('org_name')
        response = dict()
        org_details = dict()
        response['changed'] = False

        resource = self.client.get_org_by_name(org_name)
        org = Org(self.client, resource=resource)
        org_admin_resource = org.client.get_resource(org.href_admin)
        org_details['org_name'] = org_name
        org_details['full_name'] = str(org_admin_resource['FullName'])
        org_details['is_enabled'] = str(org_admin_resource['IsEnabled'])
        response['msg'] = org_details

        return response

    def update(self):
        org_name = self.params.get('org_name')
        is_enabled = self.params.get('is_enabled')
        response = dict()
        response['changed'] = False

        resource = self.client.get_org_by_name(org_name)
        org = Org(self.client, resource=resource)
        org.update_org(is_enabled)
        response['msg'] = "Org {} has been updated.".format(org_name)
        response['changed'] = True

        return response

    def delete(self):
        org_name = self.params.get('org_name')
        force = self.params.get('force')
        recursive = self.params.get('recursive')
        response = dict()
        response['changed'] = False

        try:
            delete_org_task = self.system.delete_org(org_name, force,
                                                     recursive)
            self.execute_task(delete_org_task)
            response['msg'] = "Org {} has been deleted.".format(org_name)
            response['changed'] = True
        except EntityNotFoundException:
            response['warnings'] = "Org {} is not present.".format(org_name)

        return response
예제 #12
0
client.set_highest_supported_version()
client.set_credentials(BasicLoginCredentials(cfg.vcd_admin_user,
                       "System", cfg.vcd_admin_password))

# Ensure the org exists.
print("Fetching org...")
try:
    # This call gets a record that we can turn into an Org class.
    org_record = client.get_org_by_name(cfg.org)
    org = Org(client, href=org_record.get('href'))
    print("Org already exists: {0}".format(org.get_name()))
except Exception:
    print("Org does not exist, creating: {0}".format(cfg.org))
    sys_admin_resource = client.get_admin()
    system = System(client, admin_resource=sys_admin_resource)
    admin_org_resource = system.create_org(cfg.org, "Test Org", True)
    org_record = client.get_org_by_name(cfg.org)
    org = Org(client, href=org_record.get('href'))
    print("Org now exists: {0}".format(org.get_name()))

# Ensure user exists on the org.
try:
    user_resource = org.get_user(cfg.user['name'])
    print("User already exists: {0}".format(cfg.user['name']))
except Exception:
    print("User does not exist, creating: {0}".format(cfg.user['name']))
    role_record = org.get_role_record(cfg.user['role'])
    user_resource = org.create_user(user_name=cfg.user['name'],
                                    password=cfg.user['password'],
                                    role_href=role_record.get('href'))
    print("User now exists: {0}".format(user_resource.get('name')))
예제 #13
0
    def test_05_create_org_ldap_settings_custom(self):
        ''' Create organization with LDAP settings CUSTOM '''

        sys_admin = self.client.get_admin()
        system = System(self.client, admin_resource=sys_admin)

        # Test data
        (org_name, org_desc) = self.get_org_data()
        ldap_mode = 'CUSTOM'
        custom_hostname = 'localhost'
        custom_port = 8080
        custom_is_ssl = True
        custom_is_ssl_accept_all = True
        custom_username = '******'
        custom_password = '******'
        custom_auth_mechanism = 'SIMPLE'
        custom_connector_type = 'OPEN_LDAP'
        custom_is_group_search_base_enabled = False
        custom_user_object_class = 'user'
        custom_user_object_identifier = 'objectGuid'
        custom_user_username = '******'
        custom_user_email = '*****@*****.**'
        custom_user_full_name = 'First Last'
        custom_user_given_name = 'First'
        custom_user_surname = 'Last'
        custom_user_telephone = '+61430088000'
        custom_user_group_membership_identifier = 'dn'
        custom_user_group_back_link_identifier = 'abc'
        custom_group_object_class = 'group'
        custom_group_object_identifier = 'dn'
        custom_group_group_name = 'cn'
        custom_group_membership = 'member'
        custom_group_membership_identifier = 'dn'
        custom_group_back_link_identifier = 'abc'
        custom_use_external_kerberos = False

        settings = OrgSettings()
        settings.set_org_ldap_settings(org_ldap_mode=ldap_mode,
                                       cus_hostname=custom_hostname,
                                       cus_port=custom_port,
                                       cus_is_ssl=custom_is_ssl,
                                       cus_is_ssl_accept_all=custom_is_ssl_accept_all,
                                       cus_username=custom_username,
                                       cus_password=custom_password,
                                       cus_auth_mechanism=custom_auth_mechanism,
                                       cus_connector_type=custom_connector_type,
                                       cus_is_grp_search_base_enabled=custom_is_group_search_base_enabled,
                                       cus_user_object_class=custom_user_object_class,
                                       cus_user_object_id=custom_user_object_identifier,
                                       cus_user_username=custom_user_username,
                                       cus_user_email=custom_user_email,
                                       cus_user_full_name=custom_user_full_name,
                                       cus_user_given_name=custom_user_given_name,
                                       cus_user_surname=custom_user_surname,
                                       cus_user_telephone=custom_user_telephone,
                                       cus_user_grp_membership_id=custom_user_group_membership_identifier,
                                       cus_user_grp_back_link_id=custom_user_group_back_link_identifier,
                                       cus_grp_object_class=custom_group_object_class,
                                       cus_grp_object_id=custom_group_object_identifier,
                                       cus_grp_grp_name=custom_group_group_name,
                                       cus_grp_membership=custom_group_membership,
                                       cus_grp_membership_id=custom_group_membership_identifier,
                                       cus_grp_back_link_id=custom_group_back_link_identifier,
                                       cus_use_external_kerberos=custom_use_external_kerberos)

        org = system.create_org(org_name,
                                org_desc,
                                settings=settings)
        ldap = org.Settings.OrgLdapSettings

        # Verifications
        assert org.get('name') == org_name
        assert ldap.OrgLdapMode.text == ldap_mode
        assert ldap.CustomOrgLdapSettings.HostName.text == custom_hostname
        assert int(ldap.CustomOrgLdapSettings.Port.text) == custom_port
        assert ldap.CustomOrgLdapSettings.IsSsl.text == str(custom_is_ssl).lower()
        assert ldap.CustomOrgLdapSettings.IsSslAcceptAll.text == str(custom_is_ssl_accept_all).lower()
        assert ldap.CustomOrgLdapSettings.UserName.text == custom_username
        # Password is not returned so no assert for password
        assert ldap.CustomOrgLdapSettings.AuthenticationMechanism.text == custom_auth_mechanism
        assert ldap.CustomOrgLdapSettings.IsGroupSearchBaseEnabled.text == str(custom_is_group_search_base_enabled).lower()
        assert ldap.CustomOrgLdapSettings.ConnectorType.text == custom_connector_type
        assert ldap.CustomOrgLdapSettings.UserAttributes.ObjectClass.text == custom_user_object_class
        assert ldap.CustomOrgLdapSettings.UserAttributes.ObjectIdentifier.text == custom_user_object_identifier
        assert ldap.CustomOrgLdapSettings.UserAttributes.UserName.text == custom_user_username
        assert ldap.CustomOrgLdapSettings.UserAttributes.Email.text == custom_user_email
        assert ldap.CustomOrgLdapSettings.UserAttributes.FullName.text == custom_user_full_name
        assert ldap.CustomOrgLdapSettings.UserAttributes.GivenName.text == custom_user_given_name
        assert ldap.CustomOrgLdapSettings.UserAttributes.Surname.text == custom_user_surname
        assert ldap.CustomOrgLdapSettings.UserAttributes.Telephone.text == custom_user_telephone
        assert ldap.CustomOrgLdapSettings.UserAttributes.GroupMembershipIdentifier.text == custom_user_group_membership_identifier
        assert ldap.CustomOrgLdapSettings.UserAttributes.GroupBackLinkIdentifier.text == custom_user_group_back_link_identifier
        assert ldap.CustomOrgLdapSettings.GroupAttributes.ObjectClass.text == custom_group_object_class
        assert ldap.CustomOrgLdapSettings.GroupAttributes.ObjectIdentifier.text == custom_group_object_identifier
        assert ldap.CustomOrgLdapSettings.GroupAttributes.GroupName.text == custom_group_group_name
        assert ldap.CustomOrgLdapSettings.GroupAttributes.Membership.text == custom_group_membership
        assert ldap.CustomOrgLdapSettings.GroupAttributes.MembershipIdentifier.text == custom_group_membership_identifier
        assert ldap.CustomOrgLdapSettings.GroupAttributes.BackLinkIdentifier.text == custom_group_back_link_identifier
        assert ldap.CustomOrgLdapSettings.UseExternalKerberos.text == str(custom_use_external_kerberos).lower()

        # Cleanup delete the organization
        system.delete_org(org_name, True, True)
예제 #14
0
    BasicLoginCredentials(os.environ['VCLOUD_USERNAME'],
                          os.environ['VCLOUD_ORG'],
                          os.environ['VCLOUD_PASSWORD']))

# Ensure the org exists.
print("Fetching org...")
try:
    # This call gets a record that we can turn into an Org class.
    org_record = client.get_org_by_name(os.environ['VCLOUD_ORG'])
    org = Org(client, href=org_record.get('href'))
    print("Org already exists: {0}".format(org.get_name()))
except Exception:
    print("Org does not exist, creating: {0}".format(os.environ['VCLOUD_ORG']))
    sys_admin_resource = client.get_admin()
    system = System(client, admin_resource=sys_admin_resource)
    admin_org_resource = system.create_org(os.environ['VCLOUD_ORG'],
                                           "Test Org", True)
    org_record = client.get_org_by_name(os.environ['VCLOUD_ORG'])
    org = Org(client, href=org_record.get('href'))
    print("Org now exists: {0}".format(org.get_name()))

# Ensure VDC exists.
try:
    vdc_resource = org.get_vdc(os.environ['VCLOUD_VDC_NAME'])
    vdc = VDC(client, resource=vdc_resource)
    print("  VDC '{0}' ... OK".format(os.environ['VCLOUD_VDC_NAME']))
except Exception:

    print("  VDC '{0}' ... KO. Exiting.".format(os.environ['VCLOUD_VDC_NAME']))
    exit(0)

# # Fetching catalogs
def create_org(client):
    logging.info("create org %s", str(client))
    sys_admin = client.get_admin()
    system = System(client, admin_resource=sys_admin)
    system.create_org("O2", "O2 ORG")
예제 #16
0
 def test_create_org(self):
     sys_admin = self.client.get_admin()
     system = System(self.client, admin_resource=sys_admin)
     org = system.create_org(self.config['vcd']['org_name'],
                             self.config['vcd']['org_full_name'])
     assert org.get('name') == self.config['vcd']['org_name']
예제 #17
0
 def test_create_org(self):
     sys_admin = self.client.get_admin()
     system = System(self.client, admin_resource=sys_admin)
     org_name = "orgName".join(random.sample(string.ascii_lowercase, 4))
     org = system.create_org(org_name, "orgFullName")
     assert org.get('name') == org_name
예제 #18
0
 def test_01_create_org(self):
     sys_admin = self.client.get_admin()
     system = System(self.client, admin_resource=sys_admin)
     org = system.create_org(self.config['vcd']['org_name'],
                             self.config['vcd']['org_full_name'])
     assert org.get('name') == self.config['vcd']['org_name']
예제 #19
0
파일: vcd_org.py 프로젝트: 0z-cloud/vx
class VCDOrg(VcdAnsibleModule):
    def __init__(self, **kwargs):
        super(VCDOrg, self).__init__(**kwargs)

    def manage_states(self):
        state = self.params.get('state')
        if state == "present":
            return self.create()

        if state == "absent":
            return self.delete()

        if state == "update":
            return self.update()

    def manage_operations(self):
        operation = self.params.get('operation')
        if operation == "read":
            return self.read()

        if operation == "add_rights":
            return self.add_rights()

        if operation == "remove_rights":
            return self.remove_rights()

        if operation == "list_rights":
            return self.list_rights()

        if operation == "list_roles":
            return self.list_roles()

        if operation == "list_users":
            return self.list_users()

        if operation == "list_vdcs":
            return self.list_vdcs()

        if operation == "set_metadata":
            return self.set_metadata()

    def create(self):
        org_name = self.params.get('org_name')
        full_name = self.params.get('full_name')
        is_enabled = self.params.get('is_enabled')
        response = dict()
        response['changed'] = False

        try:
            sys_admin = self.client.get_admin()
            self.system = System(self.client, admin_resource=sys_admin)
            self.system.create_org(org_name, full_name, is_enabled)
            response['msg'] = 'Org {} has been created.'.format(org_name)
            response['changed'] = True
        except BadRequestException:
            response['warnings'] = 'Org {} is already present.'.format(
                org_name)

        return response

    def read(self):
        org_name = self.params.get('org_name')
        response = dict()
        org_details = dict()
        response['changed'] = False

        resource = self.client.get_org_by_name(org_name)
        org = Org(self.client, resource=resource)
        org_admin_resource = org.client.get_resource(org.href_admin)
        org_details['org_name'] = org_name
        org_details['full_name'] = str(org_admin_resource['FullName'])
        org_details['is_enabled'] = str(org_admin_resource['IsEnabled'])
        response['msg'] = org_details

        return response

    def update(self):
        org_name = self.params.get('org_name')
        is_enabled = self.params.get('is_enabled')
        response = dict()
        response['changed'] = False

        resource = self.client.get_org_by_name(org_name)
        org = Org(self.client, resource=resource)
        org.update_org(is_enabled)
        response['msg'] = "Org {} has been updated.".format(org_name)
        response['changed'] = True

        return response

    def delete(self):
        org_name = self.params.get('org_name')
        force = self.params.get('force')
        recursive = self.params.get('recursive')
        response = dict()
        response['changed'] = False

        try:
            sys_admin = self.client.get_admin()
            self.system = System(self.client, admin_resource=sys_admin)
            delete_org_task = self.system.delete_org(org_name, force,
                                                     recursive)
            self.execute_task(delete_org_task)
            response['msg'] = "Org {} has been deleted.".format(org_name)
            response['changed'] = True
        except EntityNotFoundException:
            response['warnings'] = "Org {} is not present.".format(org_name)

        return response

    def add_rights(self):
        org_name = self.params.get('org_name')
        org_rights = self.params.get('org_rights')
        response = dict()
        response['changed'] = False

        resource = self.client.get_org_by_name(org_name)
        org = Org(self.client, resource=resource)
        org.add_rights(org_rights)
        response['msg'] = "Rights has been added to org successfully."
        response['changed'] = True

        return response

    def remove_rights(self):
        org_name = self.params.get('org_name')
        org_rights = self.params.get('org_rights')
        response = dict()
        response['changed'] = False

        resource = self.client.get_org_by_name(org_name)
        org = Org(self.client, resource=resource)
        org.remove_rights(org_rights)
        response['msg'] = "Rights has been removed to org successfully."
        response['changed'] = True

        return response

    def list_rights(self):
        org_name = self.params.get('org_name')
        response = dict()
        response['changed'] = False

        resource = self.client.get_org_by_name(org_name)
        org = Org(self.client, resource=resource)
        response['msg'] = org.list_rights_of_org()

        return response

    def list_roles(self):
        org_name = self.params.get('org_name')
        response = dict()
        response['changed'] = False

        resource = self.client.get_org_by_name(org_name)
        org = Org(self.client, resource=resource)
        response['msg'] = org.list_roles()

        return response

    def list_users(self):
        org_name = self.params.get('org_name')
        response = dict()
        org_details = dict()
        response['users'] = list()
        response['changed'] = False

        resource = self.client.get_org_by_name(org_name)
        org = Org(self.client, resource=resource)
        org_user_list = org.list_users()
        resource_type = ResourceType.USER.value
        if self.client.is_sysadmin():
            resource_type = ResourceType.ADMIN_USER.value
        for org_user in org_user_list:
            response['users'].append(
                to_dict(org_user, resource_type=resource_type, exclude=[]))

        return response

    def list_vdcs(self):
        org_name = self.params.get('org_name')
        response = dict()
        org_details = dict()
        response['vdcs'] = list()
        response['changed'] = False

        resource = self.client.get_org_by_name(org_name)
        org = Org(self.client, resource=resource)
        response['vdcs'] = org.list_vdcs()

        return response

    def set_metadata(self):
        org_name = self.params.get('org_name')
        metadata = self.params.get('metadata')
        response = dict()
        response['msg'] = ''

        if len(metadata) != 0:
            # workaround to set metadata for org as it is as of now not implemented in pyvcloud for org, vdc, e.g. - we will open a pull request to fix this in the future
            resource = self.client.get_linked_resource(
                self.client.get_org_by_name(org_name), RelationType.DOWN,
                EntityType.METADATA.value)
            self.metadata = Metadata(self.client, resource=resource)
            for md in metadata:
                domain = MetadataDomain.SYSTEM
                visibility = MetadataVisibility.READONLY
                if type(md) is dict and md.get('state', 'present') == 'absent':
                    if md.get('visibility', 'READONLY').upper() == 'READWRITE':
                        domain = MetadataDomain.GENERAL
                    self.metadata.remove_metadata(md['name'], domain)
                else:
                    if md.get('visibility', 'READONLY').upper() == 'PRIVATE':
                        visibility = MetadataVisibility.PRIVATE
                    elif md.get('visibility',
                                'READONLY').upper() == 'READWRITE':
                        domain = MetadataDomain.GENERAL
                        visibility = MetadataVisibility.READWRITE
                    value_type = MetadataValueType.STRING
                    if md.get('type', 'STRING').upper() == 'NUMBER':
                        value_type = MetadataValueType.NUMBER
                    elif md.get('type', 'STRING').upper() == 'BOOLEAN':
                        value_type = MetadataValueType.BOOLEAN
                    elif md.get('type', 'STRING').upper() == 'DATA_TIME':
                        value_type = MetadataValueType.DATA_TIME
                    self.metadata.set_metadata(md['name'], md['value'], domain,
                                               visibility, value_type, True)

        return response
예제 #20
0
                log_bodies=True)
client.set_credentials(BasicLoginCredentials(cfg.vcd_admin_user,
                       "System", cfg.vcd_admin_password))

# Ensure the org exists.
print("Fetching org...")
try:
    # This call gets a record that we can turn into an Org class.
    org_record = client.get_org_by_name(cfg.org)
    org = Org(client, href=org_record.get('href'))
    print("Org already exists: {0}".format(org.get_name()))
except Exception:
    print("Org does not exist, creating: {0}".format(cfg.org))
    sys_admin_resource = client.get_admin()
    system = System(client, admin_resource=sys_admin_resource)
    admin_org_resource = system.create_org(cfg.org, "Test Org", True)
    org_record = client.get_org_by_name(cfg.org)
    org = Org(client, href=org_record.get('href'))
    print("Org now exists: {0}".format(org.get_name()))

# Ensure user exists on the org.
try:
    user_resource = org.get_user(cfg.user['name'])
    print("User already exists: {0}".format(cfg.user['name']))
except Exception:
    print("User does not exist, creating: {0}".format(cfg.user['name']))
    role_record = org.get_role_record(cfg.user['role'])
    user_resource = org.create_user(user_name=cfg.user['name'],
                                    password=cfg.user['password'],
                                    role_href=role_record.get('href'))
    print("User now exists: {0}".format(user_resource.get('name')))
예제 #21
0
class VCDOrg(VcdAnsibleModule):
    def __init__(self, **kwargs):
        super(VCDOrg, self).__init__(**kwargs)

    def manage_states(self):
        state = self.params.get('state')
        if state == "present":
            return self.create()

        if state == "absent":
            return self.delete()

        if state == "update":
            return self.update()

    def manage_operations(self):
        operation = self.params.get('operation')
        if operation == "read":
            return self.read()

        if operation == "add_rights":
            return self.add_rights()

        if operation == "remove_rights":
            return self.remove_rights()

        if operation == "list_rights":
            return self.list_rights()

        if operation == "list_roles":
            return self.list_roles()

        if operation == 'list_vdcs':
            return self.list_vdcs()

    def get_org(self):
        org_name = self.params.get('org_name')
        resource = self.client.get_org_by_name(org_name)

        return Org(self.client, resource=resource)

    def create(self):
        org_name = self.params.get('org_name')
        full_name = self.params.get('full_name')
        is_enabled = self.params.get('is_enabled')
        response = dict()
        response['changed'] = False

        try:
            self.get_org()
            response['warnings'] = 'Org {} is already present'.format(org_name)
        except EntityNotFoundException:
            sys_admin = self.client.get_admin()
            self.system = System(self.client, admin_resource=sys_admin)
            self.system.create_org(org_name, full_name, is_enabled)
            response['msg'] = 'Org {} has been created'.format(org_name)
            response['changed'] = True
        except BadRequestException:
            response['warnings'] = 'Org {} is already present'.format(org_name)

        return response

    def read(self):
        org_name = self.params.get('org_name')
        response = dict()
        org_details = dict()
        response['changed'] = False

        try:
            org = self.get_org()
            org_admin_resource = org.client.get_resource(org.href_admin)
            org_details['org_name'] = org_name
            org_details['full_name'] = str(org_admin_resource['FullName'])
            org_details['is_enabled'] = str(org_admin_resource['IsEnabled'])
            response['msg'] = org_details
        except EntityNotFoundException:
            response['warnings'] = "Org {0} not found".format(org_name)

        return response

    def update(self):
        org_name = self.params.get('org_name')
        is_enabled = self.params.get('is_enabled')
        response = dict()
        response['changed'] = False

        try:
            org = self.get_org()
            org.update_org(is_enabled)
            response['msg'] = "Org {} has been updated".format(org_name)
            response['changed'] = True
        except EntityNotFoundException:
            response['warnings'] = "Org {0} not found".format(org_name)

        return response

    def delete(self):
        org_name = self.params.get('org_name')
        force = self.params.get('force')
        recursive = self.params.get('recursive')
        response = dict()
        response['changed'] = False

        try:
            org = self.read()['msg']
            if org['is_enabled'] == "True":
                org.update_org(False)
            sys_admin = self.client.get_admin()
            self.system = System(self.client, admin_resource=sys_admin)
            delete_org_task = self.system.delete_org(org_name, force,
                                                     recursive)
            self.execute_task(delete_org_task)
            response['msg'] = "Org {} has been deleted".format(org_name)
            response['changed'] = True
        except EntityNotFoundException:
            response['warnings'] = "Org {} is not present".format(org_name)

        return response

    def add_rights(self):
        org_name = self.params.get('org_name')
        org_rights = self.params.get('org_rights')
        response = dict()
        response['changed'] = False

        try:
            org = self.get_org()
            org.add_rights(org_rights)
            response['msg'] = "Rights has been added to org successfully."
            response['changed'] = True
        except EntityNotFoundException:
            response['warnings'] = "Org {0} not found".format(org_name)

        return response

    def remove_rights(self):
        org_name = self.params.get('org_name')
        org_rights = self.params.get('org_rights')
        response = dict()
        response['changed'] = False

        try:
            org = self.get_org()
            org.remove_rights(org_rights)
            response['msg'] = "Rights has been removed to org successfully."
            response['changed'] = True
        except EntityNotFoundException:
            response['warnings'] = "Org {0} not found".format(org_name)

        return response

    def list_rights(self):
        org_name = self.params.get('org_name')
        response = dict()
        response['changed'] = False

        try:
            org = self.get_org()
            response['msg'] = org.list_rights_of_org()
        except EntityNotFoundException:
            response['warnings'] = "Org {0} not found".format(org_name)

        return response

    def list_roles(self):
        org_name = self.params.get('org_name')
        response = dict()
        response['changed'] = False

        try:
            org = self.get_org()
            response['msg'] = org.list_roles()
        except EntityNotFoundException:
            response['warnings'] = "Org {0} not found".format(org_name)

        return response

    def list_vdcs(self):
        org_name = self.params.get('org_name')
        response = dict()
        response['changed'] = False

        try:
            org = self.get_org()
            response['msg'] = [vdc.get('name') for vdc in org.list_vdcs()]
        except EntityNotFoundException:
            response['warnings'] = "Org {0} not found".format(org_name)

        return response