mirror of
https://github.com/vmware/vsphere-automation-sdk-python.git
synced 2024-11-22 01:39:58 -05:00
Merge pull request #312 from shwetapurohit/master
new samples for 7032 release
This commit is contained in:
commit
22d8a834f0
29
samples/vsphere/vcenter/certificatemanagement/README.md
Normal file
29
samples/vsphere/vcenter/certificatemanagement/README.md
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
This directory contains samples for managing the MACHINE SSL certificate and the TRUSTED ROOT CHAINS
|
||||||
|
|
||||||
|
The sample were tested against vSphere 7.0+
|
||||||
|
|
||||||
|
### TRUSTED ROOT CHAINS Create/List/Delete/Get operations
|
||||||
|
Sample | Description
|
||||||
|
----------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
trusted_root_chains_create.py | Demonstrates creation of the trusted root chain in vCenter.
|
||||||
|
trusted_root_chains_list.py | Demonstrates listing of the aliases of the published trusted root chains in vCenter.
|
||||||
|
trusted_root_chains_delete.py | Demonstrates deletion of the trusted root chain corresponding to the provided alias.
|
||||||
|
trusted_root_chains_get.py | Demonstrates retrieval of the trusted root chain corresponding to the provided alias.
|
||||||
|
|
||||||
|
### Tls certificate Renew/Get/Replace/Replace with VMCA operations
|
||||||
|
Sample | Description
|
||||||
|
----------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------
|
||||||
|
replace_tls_certificate.py | Demonstrates replacement of the machine ssl certificate with a custom certificate signed by a third party CA.
|
||||||
|
renew_tls_certificate.py | Demonstrates renewal of the machine ssl certificate for the given duration of time.
|
||||||
|
get_tls_certificate.py | Demonstrates retrieval of the machine ssl certificate along with the X.509 certificate fields.
|
||||||
|
replace_tls_certificate_with_vmca_signed.py | Demonstrates replacement of the machine ssl certificate with a VMCA signed certificate.
|
||||||
|
|
||||||
|
### VMCA ROOT replace operation
|
||||||
|
Sample | Description
|
||||||
|
----------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------
|
||||||
|
replace_vmca_root.py | Demonstrates replacement of the VMCA root certificate and regeneration of all the other certificates.
|
||||||
|
|
||||||
|
### Testbed Requirement:
|
||||||
|
- 1 vCenter Server on version 7.0+
|
||||||
|
- The username being used to run the sample should have either the CertificateManagement.Manage or
|
||||||
|
the CertificateManagement.Administer privilege depending on the operation which is intended to be performed.
|
115
samples/vsphere/vcenter/certificatemanagement/gencsr.py
Normal file
115
samples/vsphere/vcenter/certificatemanagement/gencsr.py
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
"""
|
||||||
|
* *******************************************************
|
||||||
|
* Copyright (c) VMware, Inc. 2020. All Rights Reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
* *******************************************************
|
||||||
|
*
|
||||||
|
* DISCLAIMER. THIS PROGRAM IS PROVIDED TO YOU "AS IS" WITHOUT
|
||||||
|
* WARRANTIES OR CONDITIONS OF ANY KIND, WHETHER ORAL OR WRITTEN,
|
||||||
|
* EXPRESS OR IMPLIED. THE AUTHOR SPECIFICALLY DISCLAIMS ANY IMPLIED
|
||||||
|
* WARRANTIES OR CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY,
|
||||||
|
* NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
"""
|
||||||
|
|
||||||
|
__author__ = 'VMware, Inc.'
|
||||||
|
__vcenter_version__ = '7.0+'
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
|
||||||
|
from vmware.vapi.vsphere.client import create_vsphere_client
|
||||||
|
import requests
|
||||||
|
from com.vmware.vcenter.certificate_management.vcenter_client import TlsCsr
|
||||||
|
from samples.vsphere.common import (sample_cli, sample_util)
|
||||||
|
|
||||||
|
"""
|
||||||
|
Description: Demonstrates the generation of the Certificate Signing request
|
||||||
|
for the MACHINE SSL certificate
|
||||||
|
|
||||||
|
Sample Prerequisites:
|
||||||
|
- The user invoking the API should have the CertificateManagement.Administer or the
|
||||||
|
CertificateManagement.Manage privilege.
|
||||||
|
"""
|
||||||
|
|
||||||
|
parser = sample_cli.build_arg_parser()
|
||||||
|
|
||||||
|
parser.add_argument('--keysize',
|
||||||
|
help='Key size used to generate the private key.'
|
||||||
|
'keysize will take 2048 bits if not modified')
|
||||||
|
|
||||||
|
parser.add_argument('--commonname',
|
||||||
|
help='Common name of the certificate subject field.'
|
||||||
|
'common name will take the Primary Network Identifier(PNID) if not modified.')
|
||||||
|
|
||||||
|
parser.add_argument('--organization',
|
||||||
|
required=True,
|
||||||
|
help='Organization field in certificate subject.')
|
||||||
|
|
||||||
|
parser.add_argument('--organizationunit',
|
||||||
|
required=True,
|
||||||
|
help='Organization unit field in certificate subject')
|
||||||
|
|
||||||
|
parser.add_argument('--locality',
|
||||||
|
required=True,
|
||||||
|
help='Locality field in the certificate subject')
|
||||||
|
|
||||||
|
parser.add_argument('--stateorprovince',
|
||||||
|
required=True,
|
||||||
|
help='State field in certificate subject')
|
||||||
|
|
||||||
|
parser.add_argument('--country',
|
||||||
|
required=True,
|
||||||
|
help='Country field in the certificate subject')
|
||||||
|
|
||||||
|
parser.add_argument('--emailaddress',
|
||||||
|
required=True,
|
||||||
|
help='Email field in Certificate extensions')
|
||||||
|
|
||||||
|
parser.add_argument('--subjectaltname',
|
||||||
|
help='subjectaltname is list of Dns Names and Ip addresses')
|
||||||
|
|
||||||
|
args = sample_util.process_cli_args(parser.parse_args())
|
||||||
|
|
||||||
|
session = requests.session()
|
||||||
|
session.verify = False if args.skipverification else True
|
||||||
|
|
||||||
|
# Login to vCenter
|
||||||
|
vsphere_client = create_vsphere_client(server=args.server,
|
||||||
|
username=args.username,
|
||||||
|
password=args.password,
|
||||||
|
session=session)
|
||||||
|
|
||||||
|
common_name = args.commonname
|
||||||
|
organization = args.organization
|
||||||
|
organization_unit = args.organizationunit
|
||||||
|
locality = args.locality
|
||||||
|
state_or_province = args.stateorprovince
|
||||||
|
country = args.country
|
||||||
|
email_address = args.emailaddress
|
||||||
|
|
||||||
|
if args.keysize is None:
|
||||||
|
key_size = args.keysize
|
||||||
|
else:
|
||||||
|
key_size = int(args.keysize)
|
||||||
|
|
||||||
|
if args.subjectaltname is None:
|
||||||
|
subject_alt_name = args.subjectaltname
|
||||||
|
else:
|
||||||
|
subject_alt_name = args.subjectaltname.split(',')
|
||||||
|
|
||||||
|
"""
|
||||||
|
Create the spec for input to the API
|
||||||
|
"""
|
||||||
|
spec = TlsCsr.Spec(key_size=key_size,
|
||||||
|
common_name=common_name,
|
||||||
|
organization=organization,
|
||||||
|
organization_unit=organization_unit,
|
||||||
|
locality=locality,
|
||||||
|
state_or_province=state_or_province,
|
||||||
|
country=country,
|
||||||
|
email_address=email_address,
|
||||||
|
subject_alt_name=subject_alt_name)
|
||||||
|
|
||||||
|
print('Generating the certificate signing request based on the information provided in the spec ')
|
||||||
|
print(vsphere_client.vcenter.certificate_management.vcenter.TlsCsr.create(spec))
|
@ -0,0 +1,46 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
"""
|
||||||
|
* *******************************************************
|
||||||
|
* Copyright (c) VMware, Inc. 2020. All Rights Reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
* *******************************************************
|
||||||
|
*
|
||||||
|
* DISCLAIMER. THIS PROGRAM IS PROVIDED TO YOU "AS IS" WITHOUT
|
||||||
|
* WARRANTIES OR CONDITIONS OF ANY KIND, WHETHER ORAL OR WRITTEN,
|
||||||
|
* EXPRESS OR IMPLIED. THE AUTHOR SPECIFICALLY DISCLAIMS ANY IMPLIED
|
||||||
|
* WARRANTIES OR CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY,
|
||||||
|
* NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
"""
|
||||||
|
|
||||||
|
__author__ = 'VMware, Inc.'
|
||||||
|
__vcenter_version__ = '7.0+'
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
from samples.vsphere.common import (sample_cli, sample_util)
|
||||||
|
from vmware.vapi.vsphere.client import create_vsphere_client
|
||||||
|
import requests
|
||||||
|
|
||||||
|
"""
|
||||||
|
Description: Demonstrates retrieval of the MACHINE SSL certificate from the vCenter
|
||||||
|
along with the decoded X.509 certificate fields
|
||||||
|
|
||||||
|
Sample Prerequisites:
|
||||||
|
- The user invoking the API should have the System.Read privilege.
|
||||||
|
"""
|
||||||
|
|
||||||
|
parser = sample_cli.build_arg_parser()
|
||||||
|
|
||||||
|
args = sample_util.process_cli_args(parser.parse_args())
|
||||||
|
|
||||||
|
session = requests.session()
|
||||||
|
session.verify = False if args.skipverification else True
|
||||||
|
|
||||||
|
# Login to vCenter
|
||||||
|
vsphere_client = create_vsphere_client(server=args.server,
|
||||||
|
username=args.username,
|
||||||
|
password=args.password,
|
||||||
|
session=session)
|
||||||
|
|
||||||
|
print('Listing the MACHINE SSL certificate along with the decoded X.509 fields ')
|
||||||
|
print(vsphere_client.vcenter.certificate_management.vcenter.Tls.get())
|
@ -0,0 +1,57 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
"""
|
||||||
|
* *******************************************************
|
||||||
|
* Copyright (c) VMware, Inc. 2020. All Rights Reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
* *******************************************************
|
||||||
|
*
|
||||||
|
* DISCLAIMER. THIS PROGRAM IS PROVIDED TO YOU "AS IS" WITHOUT
|
||||||
|
* WARRANTIES OR CONDITIONS OF ANY KIND, WHETHER ORAL OR WRITTEN,
|
||||||
|
* EXPRESS OR IMPLIED. THE AUTHOR SPECIFICALLY DISCLAIMS ANY IMPLIED
|
||||||
|
* WARRANTIES OR CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY,
|
||||||
|
* NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
"""
|
||||||
|
|
||||||
|
__author__ = 'VMware, Inc.'
|
||||||
|
__vcenter_version__ = '7.0+'
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
|
||||||
|
from vmware.vapi.vsphere.client import create_vsphere_client
|
||||||
|
import requests
|
||||||
|
from com.vmware.vcenter.certificate_management.vcenter_client import Tls
|
||||||
|
from samples.vsphere.common import (sample_cli, sample_util)
|
||||||
|
|
||||||
|
"""
|
||||||
|
Description: Demonstrates the renewal of the MACHINE SSL certificate
|
||||||
|
|
||||||
|
Sample Prerequisites:
|
||||||
|
- The user invoking the API should have the CertificateManagement.Administer privilege.
|
||||||
|
"""
|
||||||
|
|
||||||
|
parser = sample_cli.build_arg_parser()
|
||||||
|
|
||||||
|
parser.add_argument('--duration',
|
||||||
|
help='Duration of time specified in number of days for which the '
|
||||||
|
'MACHINE SSL certificate has to be renewed')
|
||||||
|
|
||||||
|
args = sample_util.process_cli_args(parser.parse_args())
|
||||||
|
|
||||||
|
session = requests.session()
|
||||||
|
session.verify = False if args.skipverification else True
|
||||||
|
|
||||||
|
# Login to vCenter
|
||||||
|
vsphere_client = create_vsphere_client(server=args.server,
|
||||||
|
username=args.username,
|
||||||
|
password=args.password,
|
||||||
|
session=session)
|
||||||
|
|
||||||
|
if args.duration is None:
|
||||||
|
print('Renewing the MACHINE SSL certificate for the duration of ' + str(730) + ' days')
|
||||||
|
duration = args.duration
|
||||||
|
else:
|
||||||
|
print('Renewing the MACHINE SSL certificate for the specified duration of ' + args.duration + ' days')
|
||||||
|
duration = int(args.duration)
|
||||||
|
|
||||||
|
vsphere_client.vcenter.certificate_management.vcenter.Tls.renew(duration)
|
@ -0,0 +1,81 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
"""
|
||||||
|
* *******************************************************
|
||||||
|
* Copyright (c) VMware, Inc. 2020. All Rights Reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
* *******************************************************
|
||||||
|
*
|
||||||
|
* DISCLAIMER. THIS PROGRAM IS PROVIDED TO YOU "AS IS" WITHOUT
|
||||||
|
* WARRANTIES OR CONDITIONS OF ANY KIND, WHETHER ORAL OR WRITTEN,
|
||||||
|
* EXPRESS OR IMPLIED. THE AUTHOR SPECIFICALLY DISCLAIMS ANY IMPLIED
|
||||||
|
* WARRANTIES OR CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY,
|
||||||
|
* NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
"""
|
||||||
|
|
||||||
|
__author__ = 'VMware, Inc.'
|
||||||
|
__vcenter_version__ = '7.0+'
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
|
||||||
|
from vmware.vapi.vsphere.client import create_vsphere_client
|
||||||
|
import requests
|
||||||
|
from com.vmware.vcenter.certificate_management.vcenter_client import Tls
|
||||||
|
from samples.vsphere.common import (sample_cli, sample_util)
|
||||||
|
|
||||||
|
"""
|
||||||
|
Description: Demonstrates the replacement of the MACHINE SSL certificate with a custom
|
||||||
|
certificate signed by an external third party CA.
|
||||||
|
|
||||||
|
Sample Prerequisites:
|
||||||
|
- The user invoking the API should have the CertificateManagement.Administer privilege.
|
||||||
|
"""
|
||||||
|
|
||||||
|
parser = sample_cli.build_arg_parser()
|
||||||
|
|
||||||
|
parser.add_argument('--cert',
|
||||||
|
required=True,
|
||||||
|
help='Leaf certificate for replace the MACHINE SSL certificate.')
|
||||||
|
|
||||||
|
parser.add_argument('--key',
|
||||||
|
help='The private key.'
|
||||||
|
'Not required if the gencsr api was used to generated the certificate signing request.')
|
||||||
|
|
||||||
|
parser.add_argument('--rootcert',
|
||||||
|
help='The root certificate and the intermediate root certificates '
|
||||||
|
'required to establish the chain of trust.'
|
||||||
|
'Not required if the certificates are already present in the vCenter.')
|
||||||
|
|
||||||
|
args = sample_util.process_cli_args(parser.parse_args())
|
||||||
|
|
||||||
|
session = requests.session()
|
||||||
|
session.verify = False if args.skipverification else True
|
||||||
|
|
||||||
|
# Login to vCenter
|
||||||
|
vsphere_client = create_vsphere_client(server=args.server,
|
||||||
|
username=args.username,
|
||||||
|
password=args.password,
|
||||||
|
session=session)
|
||||||
|
|
||||||
|
cert = args.cert.encode(encoding='utf-8').decode('unicode_escape')
|
||||||
|
|
||||||
|
if args.key is not None:
|
||||||
|
key = args.encode(encoding='utf-8').key.decode('unicode_escape')
|
||||||
|
else:
|
||||||
|
key = args.key
|
||||||
|
|
||||||
|
if args.rootcert is not None:
|
||||||
|
root_cert = args.rootcert.encode(encoding='utf-8').decode('unicode_escape')
|
||||||
|
else:
|
||||||
|
root_cert = args.rootcert
|
||||||
|
|
||||||
|
"""
|
||||||
|
Create the spec for input to the API
|
||||||
|
"""
|
||||||
|
spec = Tls.Spec(cert=cert,
|
||||||
|
key=key,
|
||||||
|
root_cert=root_cert)
|
||||||
|
|
||||||
|
|
||||||
|
print('The MACHINE SSL certificate will be replaced with the custom certificate ')
|
||||||
|
vsphere_client.vcenter.certificate_management.vcenter.Tls.set(spec)
|
@ -0,0 +1,115 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
"""
|
||||||
|
* *******************************************************
|
||||||
|
* Copyright (c) VMware, Inc. 2020. All Rights Reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
* *******************************************************
|
||||||
|
*
|
||||||
|
* DISCLAIMER. THIS PROGRAM IS PROVIDED TO YOU "AS IS" WITHOUT
|
||||||
|
* WARRANTIES OR CONDITIONS OF ANY KIND, WHETHER ORAL OR WRITTEN,
|
||||||
|
* EXPRESS OR IMPLIED. THE AUTHOR SPECIFICALLY DISCLAIMS ANY IMPLIED
|
||||||
|
* WARRANTIES OR CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY,
|
||||||
|
* NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
"""
|
||||||
|
|
||||||
|
__author__ = 'VMware, Inc.'
|
||||||
|
__vcenter_version__ = '7.0+'
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
|
||||||
|
from vmware.vapi.vsphere.client import create_vsphere_client
|
||||||
|
import requests
|
||||||
|
from com.vmware.vcenter.certificate_management.vcenter_client import Tls
|
||||||
|
from samples.vsphere.common import (sample_cli, sample_util)
|
||||||
|
|
||||||
|
"""
|
||||||
|
Description: Demonstrates the replacement of the MACHINE SSL certificate with a
|
||||||
|
VMCA signed certificate.
|
||||||
|
|
||||||
|
Sample Prerequisites:
|
||||||
|
- The user invoking the API should have the CertificateManagement.Administer privilege.
|
||||||
|
"""
|
||||||
|
|
||||||
|
parser = sample_cli.build_arg_parser()
|
||||||
|
|
||||||
|
parser.add_argument('--keysize',
|
||||||
|
help='Key size used to generate the key pair.'
|
||||||
|
'keysize will take 2048 bits if not modified')
|
||||||
|
|
||||||
|
parser.add_argument('--commonname',
|
||||||
|
help='Common name of the certificate subject field.'
|
||||||
|
'Common name will take Primary Network Identifier(PNID) if not modified.')
|
||||||
|
|
||||||
|
parser.add_argument('--organization',
|
||||||
|
required=True,
|
||||||
|
help='Organization field in certificate subject.')
|
||||||
|
|
||||||
|
parser.add_argument('--organizationunit',
|
||||||
|
required=True,
|
||||||
|
help='Organization unit field in certificate subject')
|
||||||
|
|
||||||
|
parser.add_argument('--locality',
|
||||||
|
required=True,
|
||||||
|
help='Locality field in the certificate subject')
|
||||||
|
|
||||||
|
parser.add_argument('--stateorprovince',
|
||||||
|
required=True,
|
||||||
|
help='State field in certificate subject')
|
||||||
|
|
||||||
|
parser.add_argument('--country',
|
||||||
|
required=True,
|
||||||
|
help='Country field in the certificate subject')
|
||||||
|
|
||||||
|
parser.add_argument('--emailaddress',
|
||||||
|
required=True,
|
||||||
|
help='Email field in Certificate extensions')
|
||||||
|
|
||||||
|
parser.add_argument('--subjectaltname',
|
||||||
|
help='subjectaltname is list of Dns Names and Ip addresses')
|
||||||
|
|
||||||
|
args = sample_util.process_cli_args(parser.parse_args())
|
||||||
|
|
||||||
|
session = requests.session()
|
||||||
|
session.verify = False if args.skipverification else True
|
||||||
|
|
||||||
|
# Login to vCenter
|
||||||
|
vsphere_client = create_vsphere_client(server=args.server,
|
||||||
|
username=args.username,
|
||||||
|
password=args.password,
|
||||||
|
session=session)
|
||||||
|
|
||||||
|
common_name = args.commonname
|
||||||
|
organization = args.organization
|
||||||
|
organization_unit = args.organizationunit
|
||||||
|
locality = args.locality
|
||||||
|
state_or_province = args.stateorprovince
|
||||||
|
country = args.country
|
||||||
|
email_address = args.emailaddress
|
||||||
|
|
||||||
|
if args.keysize is None:
|
||||||
|
keysize = args.keysize
|
||||||
|
else:
|
||||||
|
keysize = int(args.keysize)
|
||||||
|
|
||||||
|
if args.subjectaltname is None:
|
||||||
|
subjectaltname = args.subjectaltname
|
||||||
|
else:
|
||||||
|
subjectaltname = args.subjectaltname.split(',')
|
||||||
|
|
||||||
|
"""
|
||||||
|
Create the spec for input to the API
|
||||||
|
"""
|
||||||
|
spec = Tls.ReplaceSpec(key_size=keysize,
|
||||||
|
common_name=common_name,
|
||||||
|
organization=organization,
|
||||||
|
organization_unit=organization_unit,
|
||||||
|
locality=locality,
|
||||||
|
state_or_province=state_or_province,
|
||||||
|
country=country,
|
||||||
|
email_address=email_address,
|
||||||
|
subject_alt_name=subjectaltname)
|
||||||
|
|
||||||
|
|
||||||
|
print('Replacing the MACHINE SSL certificate with a new VMCA generated certificate')
|
||||||
|
vsphere_client.vcenter.certificate_management.vcenter.Tls.replace_vmca_signed(spec)
|
@ -0,0 +1,107 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
"""
|
||||||
|
* *******************************************************
|
||||||
|
* Copyright (c) VMware, Inc. 2020. All Rights Reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
* *******************************************************
|
||||||
|
*
|
||||||
|
* DISCLAIMER. THIS PROGRAM IS PROVIDED TO YOU "AS IS" WITHOUT
|
||||||
|
* WARRANTIES OR CONDITIONS OF ANY KIND, WHETHER ORAL OR WRITTEN,
|
||||||
|
* EXPRESS OR IMPLIED. THE AUTHOR SPECIFICALLY DISCLAIMS ANY IMPLIED
|
||||||
|
* WARRANTIES OR CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY,
|
||||||
|
* NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
"""
|
||||||
|
|
||||||
|
__author__ = 'VMware, Inc.'
|
||||||
|
__vcenter_version__ = '7.0+'
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
|
||||||
|
from vmware.vapi.vsphere.client import create_vsphere_client
|
||||||
|
import requests
|
||||||
|
from com.vmware.vcenter.certificate_management.vcenter_client import VmcaRoot
|
||||||
|
from samples.vsphere.common import (sample_cli, sample_util)
|
||||||
|
|
||||||
|
"""
|
||||||
|
Description: Demonstrates the replacement of the VMCA ROOT certificate and
|
||||||
|
regeneration of all the other certificates on vCenter.
|
||||||
|
|
||||||
|
Sample Prerequisites:
|
||||||
|
- The user invoking the API should have the CertificateManagement.Administer privilege.
|
||||||
|
"""
|
||||||
|
|
||||||
|
parser = sample_cli.build_arg_parser()
|
||||||
|
|
||||||
|
parser.add_argument('--keysize',
|
||||||
|
help='Key size used to generate the private key.'
|
||||||
|
'keysize will take 2048 bits if not provided')
|
||||||
|
|
||||||
|
parser.add_argument('--commonname',
|
||||||
|
help='Common name of the certificate subject field.'
|
||||||
|
'Defaults to PNID (Primary Network Identifier).')
|
||||||
|
|
||||||
|
parser.add_argument('--organization',
|
||||||
|
help='Organization field in certificate subject.')
|
||||||
|
|
||||||
|
parser.add_argument('--organizationunit',
|
||||||
|
help='Organization unit field in certificate subject')
|
||||||
|
|
||||||
|
parser.add_argument('--locality',
|
||||||
|
help='Locality field in the certificate subject')
|
||||||
|
|
||||||
|
parser.add_argument('--stateorprovince',
|
||||||
|
help='State field in certificate subject')
|
||||||
|
|
||||||
|
parser.add_argument('--country',
|
||||||
|
help='Country field in the certificate subject')
|
||||||
|
|
||||||
|
parser.add_argument('--emailaddress',
|
||||||
|
help='Email field in Certificate extensions')
|
||||||
|
|
||||||
|
parser.add_argument('--subjectaltname',
|
||||||
|
help='subjectaltname is list of Dns Names and Ip addresses')
|
||||||
|
|
||||||
|
args = sample_util.process_cli_args(parser.parse_args())
|
||||||
|
|
||||||
|
session = requests.session()
|
||||||
|
session.verify = False if args.skipverification else True
|
||||||
|
|
||||||
|
# Login to vCenter
|
||||||
|
vsphere_client = create_vsphere_client(server=args.server,
|
||||||
|
username=args.username,
|
||||||
|
password=args.password,
|
||||||
|
session=session)
|
||||||
|
|
||||||
|
common_name = args.commonname
|
||||||
|
organization = args.organization
|
||||||
|
organization_unit = args.organizationunit
|
||||||
|
locality = args.locality
|
||||||
|
state_or_province = args.stateorprovince
|
||||||
|
country = args.country
|
||||||
|
email_address = args.emailaddress
|
||||||
|
|
||||||
|
if args.keysize is None:
|
||||||
|
key_size = args.keysize
|
||||||
|
else:
|
||||||
|
key_size = int(args.keysize)
|
||||||
|
if args.subjectaltname is None:
|
||||||
|
subject_alt_name = args.subjectaltname
|
||||||
|
else:
|
||||||
|
subject_alt_name = args.subjectaltname.split(',')
|
||||||
|
|
||||||
|
"""
|
||||||
|
Create the spec for input to the API
|
||||||
|
"""
|
||||||
|
spec = VmcaRoot.CreateSpec(key_size=key_size,
|
||||||
|
common_name=common_name,
|
||||||
|
organization=organization,
|
||||||
|
organization_unit=organization_unit,
|
||||||
|
locality=locality,
|
||||||
|
state_or_province=state_or_province,
|
||||||
|
country=country,
|
||||||
|
email_address=email_address,
|
||||||
|
subject_alt_name=subject_alt_name)
|
||||||
|
|
||||||
|
print('Replacing the VMCA ROOT certificate and regenerating all other certificates')
|
||||||
|
vsphere_client.vcenter.certificate_management.vcenter.VmcaRoot.create(spec)
|
@ -0,0 +1,62 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
"""
|
||||||
|
* *******************************************************
|
||||||
|
* Copyright (c) VMware, Inc. 2020. All Rights Reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
* *******************************************************
|
||||||
|
*
|
||||||
|
* DISCLAIMER. THIS PROGRAM IS PROVIDED TO YOU "AS IS" WITHOUT
|
||||||
|
* WARRANTIES OR CONDITIONS OF ANY KIND, WHETHER ORAL OR WRITTEN,
|
||||||
|
* EXPRESS OR IMPLIED. THE AUTHOR SPECIFICALLY DISCLAIMS ANY IMPLIED
|
||||||
|
* WARRANTIES OR CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY,
|
||||||
|
* NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
"""
|
||||||
|
|
||||||
|
__author__ = 'VMware, Inc.'
|
||||||
|
__vcenter_version__ = '7.0+'
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
|
||||||
|
from vmware.vapi.vsphere.client import create_vsphere_client
|
||||||
|
import requests
|
||||||
|
from com.vmware.vcenter.certificate_management.vcenter_client import TrustedRootChains
|
||||||
|
from com.vmware.vcenter.certificate_management_client import X509CertChain
|
||||||
|
from samples.vsphere.common import (sample_cli, sample_util)
|
||||||
|
|
||||||
|
"""
|
||||||
|
Description: Demonstrates the import of the TRUSTED ROOT CHAIN into vCenter
|
||||||
|
|
||||||
|
Sample Prerequisites:
|
||||||
|
- The user invoking the API should have the CertificateManagement.Manage or the
|
||||||
|
CertificateManagement.Administer privilege
|
||||||
|
"""
|
||||||
|
|
||||||
|
parser = sample_cli.build_arg_parser()
|
||||||
|
|
||||||
|
|
||||||
|
parser.add_argument('--certchain',
|
||||||
|
required=True,
|
||||||
|
help='The certificate chain to be imported into vCenter.')
|
||||||
|
|
||||||
|
args = sample_util.process_cli_args(parser.parse_args())
|
||||||
|
|
||||||
|
session = requests.session()
|
||||||
|
session.verify = False if args.skipverification else True
|
||||||
|
|
||||||
|
# Login to vCenter
|
||||||
|
vsphere_client = create_vsphere_client(server=args.server,
|
||||||
|
username=args.username,
|
||||||
|
password=args.password,
|
||||||
|
session=session)
|
||||||
|
|
||||||
|
cert_chain = args.certchain.encode(encoding='utf-8').decode('unicode_escape').split(',')
|
||||||
|
|
||||||
|
"""
|
||||||
|
Creation of the spec for input to the API
|
||||||
|
"""
|
||||||
|
x509_cert_chain = X509CertChain(cert_chain=cert_chain)
|
||||||
|
cert_chain = TrustedRootChains.CreateSpec(cert_chain=x509_cert_chain)
|
||||||
|
|
||||||
|
print('The alias of the certificate chain successfully imported into vCenter listed below ')
|
||||||
|
print(vsphere_client.vcenter.certificate_management.vcenter.TrustedRootChains.create(cert_chain))
|
@ -0,0 +1,54 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
"""
|
||||||
|
* *******************************************************
|
||||||
|
* Copyright (c) VMware, Inc. 2020. All Rights Reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
* *******************************************************
|
||||||
|
*
|
||||||
|
* DISCLAIMER. THIS PROGRAM IS PROVIDED TO YOU "AS IS" WITHOUT
|
||||||
|
* WARRANTIES OR CONDITIONS OF ANY KIND, WHETHER ORAL OR WRITTEN,
|
||||||
|
* EXPRESS OR IMPLIED. THE AUTHOR SPECIFICALLY DISCLAIMS ANY IMPLIED
|
||||||
|
* WARRANTIES OR CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY,
|
||||||
|
* NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
"""
|
||||||
|
|
||||||
|
__author__ = 'VMware, Inc.'
|
||||||
|
__vcenter_version__ = '7.0+'
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
|
||||||
|
from vmware.vapi.vsphere.client import create_vsphere_client
|
||||||
|
import requests
|
||||||
|
from com.vmware.vcenter.certificate_management.vcenter_client import TrustedRootChains
|
||||||
|
from samples.vsphere.common import (sample_cli, sample_util)
|
||||||
|
|
||||||
|
"""
|
||||||
|
Description: Demonstrates the deletion of the TRUSTED ROOT CHAIN corresponding to the provided alias
|
||||||
|
|
||||||
|
Sample Prerequisites:
|
||||||
|
- The user invoking the API should have the CertificateManagement.Manage or the
|
||||||
|
CertificateManagement.Administer privilege
|
||||||
|
"""
|
||||||
|
|
||||||
|
parser = sample_cli.build_arg_parser()
|
||||||
|
|
||||||
|
parser.add_argument('--certalias',
|
||||||
|
required=True,
|
||||||
|
help='The alias for the certificate chain to be deleted from vCenter.')
|
||||||
|
|
||||||
|
args = sample_util.process_cli_args(parser.parse_args())
|
||||||
|
|
||||||
|
session = requests.session()
|
||||||
|
session.verify = False if args.skipverification else True
|
||||||
|
|
||||||
|
# Login to vCenter
|
||||||
|
vsphere_client = create_vsphere_client(server=args.server,
|
||||||
|
username=args.username,
|
||||||
|
password=args.password,
|
||||||
|
session=session)
|
||||||
|
|
||||||
|
cert_alias = args.certalias
|
||||||
|
|
||||||
|
print('Deleting the certificate chain corresponding to the alias ' + cert_alias)
|
||||||
|
vsphere_client.vcenter.certificate_management.vcenter.TrustedRootChains.delete(cert_alias)
|
@ -0,0 +1,60 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
"""
|
||||||
|
* *******************************************************
|
||||||
|
* Copyright (c) VMware, Inc. 2020. All Rights Reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
* *******************************************************
|
||||||
|
*
|
||||||
|
* DISCLAIMER. THIS PROGRAM IS PROVIDED TO YOU "AS IS" WITHOUT
|
||||||
|
* WARRANTIES OR CONDITIONS OF ANY KIND, WHETHER ORAL OR WRITTEN,
|
||||||
|
* EXPRESS OR IMPLIED. THE AUTHOR SPECIFICALLY DISCLAIMS ANY IMPLIED
|
||||||
|
* WARRANTIES OR CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY,
|
||||||
|
* NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
"""
|
||||||
|
|
||||||
|
__author__ = 'VMware, Inc.'
|
||||||
|
__vcenter_version__ = '7.0+'
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
|
||||||
|
from vmware.vapi.vsphere.client import create_vsphere_client
|
||||||
|
import requests
|
||||||
|
from com.vmware.vcenter.certificate_management.vcenter_client import TrustedRootChains
|
||||||
|
from samples.vsphere.common import (sample_cli, sample_util)
|
||||||
|
|
||||||
|
"""
|
||||||
|
Description: Demonstrates the retrieval of the TRUSTED ROOT CHAIN corresponding to the provided alias
|
||||||
|
|
||||||
|
Sample Prerequisites:
|
||||||
|
- The user invoking the API should have the System.Read privilege
|
||||||
|
"""
|
||||||
|
|
||||||
|
parser = sample_cli.build_arg_parser()
|
||||||
|
|
||||||
|
parser.add_argument('--certalias',
|
||||||
|
help='The alias of the certificate chain which is to be retrieved.'
|
||||||
|
'All the published certificate chains will be retrieved if not provided')
|
||||||
|
|
||||||
|
args = sample_util.process_cli_args(parser.parse_args())
|
||||||
|
|
||||||
|
session = requests.session()
|
||||||
|
session.verify = False if args.skipverification else True
|
||||||
|
|
||||||
|
# Login to vCenter
|
||||||
|
vsphere_client = create_vsphere_client(server=args.server,
|
||||||
|
username=args.username,
|
||||||
|
password=args.password,
|
||||||
|
session=session)
|
||||||
|
|
||||||
|
cert_alias = args.certalias
|
||||||
|
|
||||||
|
if cert_alias is not None:
|
||||||
|
print('Retrieving the certificate chain corresponding to the alias ' + cert_alias)
|
||||||
|
print(vsphere_client.vcenter.certificate_management.vcenter.TrustedRootChains.get(cert_alias))
|
||||||
|
else:
|
||||||
|
print('Retrieving the all the published certificate chains imported to vCenter')
|
||||||
|
cert_aliases = vsphere_client.vcenter.certificate_management.vcenter.TrustedRootChains.list()
|
||||||
|
for alias in cert_aliases:
|
||||||
|
print('Retrieving the certificate chain for the alias ' + alias.chain)
|
||||||
|
print(vsphere_client.vcenter.certificate_management.vcenter.TrustedRootChains.get(alias.chain))
|
@ -0,0 +1,49 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
"""
|
||||||
|
* *******************************************************
|
||||||
|
* Copyright (c) VMware, Inc. 2020. All Rights Reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
* *******************************************************
|
||||||
|
*
|
||||||
|
* DISCLAIMER. THIS PROGRAM IS PROVIDED TO YOU "AS IS" WITHOUT
|
||||||
|
* WARRANTIES OR CONDITIONS OF ANY KIND, WHETHER ORAL OR WRITTEN,
|
||||||
|
* EXPRESS OR IMPLIED. THE AUTHOR SPECIFICALLY DISCLAIMS ANY IMPLIED
|
||||||
|
* WARRANTIES OR CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY,
|
||||||
|
* NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
"""
|
||||||
|
|
||||||
|
__author__ = 'VMware, Inc.'
|
||||||
|
__vcenter_version__ = '7.0+'
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
|
||||||
|
from vmware.vapi.vsphere.client import create_vsphere_client
|
||||||
|
import requests
|
||||||
|
from com.vmware.vcenter.certificate_management.vcenter_client import TrustedRootChains
|
||||||
|
from samples.vsphere.common import (sample_cli, sample_util)
|
||||||
|
|
||||||
|
"""
|
||||||
|
Description: Demonstrates the listing of the aliases for the published TRUSTED ROOT CHAINS in vCenter.
|
||||||
|
|
||||||
|
Sample Prerequisites:
|
||||||
|
- The user invoking the API should have the System.Read privilege
|
||||||
|
"""
|
||||||
|
|
||||||
|
parser = sample_cli.build_arg_parser()
|
||||||
|
|
||||||
|
args = sample_util.process_cli_args(parser.parse_args())
|
||||||
|
|
||||||
|
session = requests.session()
|
||||||
|
session.verify = False if args.skipverification else True
|
||||||
|
|
||||||
|
# Login to vCenter
|
||||||
|
vsphere_client = create_vsphere_client(server=args.server,
|
||||||
|
username=args.username,
|
||||||
|
password=args.password,
|
||||||
|
session=session)
|
||||||
|
|
||||||
|
|
||||||
|
print('Retrieving all the certificate chain aliases published to vCenter')
|
||||||
|
cert_aliases = vsphere_client.vcenter.certificate_management.vcenter.TrustedRootChains.list()
|
||||||
|
print(cert_aliases)
|
@ -0,0 +1,67 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
"""
|
||||||
|
* *******************************************************
|
||||||
|
* Copyright (c) VMware, Inc. 2022. All Rights Reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
* *******************************************************
|
||||||
|
*
|
||||||
|
* DISCLAIMER. THIS PROGRAM IS PROVIDED TO YOU "AS IS" WITHOUT
|
||||||
|
* WARRANTIES OR CONDITIONS OF ANY KIND, WHETHER ORAL OR WRITTEN,
|
||||||
|
* EXPRESS OR IMPLIED. THE AUTHOR SPECIFICALLY DISCLAIMS ANY IMPLIED
|
||||||
|
* WARRANTIES OR CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY,
|
||||||
|
* NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
"""
|
||||||
|
|
||||||
|
__author__ = 'VMware, Inc.'
|
||||||
|
__copyright__ = 'Copyright 2022 VMware, Inc. All rights reserved.'
|
||||||
|
__vcenter_version__ = '7.0.2+'
|
||||||
|
|
||||||
|
from com.vmware.vcenter.namespace_management_client import SupervisorServices
|
||||||
|
from com.vmware.vcenter.namespace_management.supervisor_services_client import \
|
||||||
|
Versions
|
||||||
|
|
||||||
|
from samples.vsphere.common import sample_cli
|
||||||
|
from samples.vsphere.common import sample_util
|
||||||
|
from samples.vsphere.common.ssl_helper import get_unverified_session
|
||||||
|
from samples.vsphere.vcenter.hcl.utils import get_configuration
|
||||||
|
|
||||||
|
separator = '-' * 40
|
||||||
|
|
||||||
|
|
||||||
|
class ListSupervisorServices(object):
|
||||||
|
"""
|
||||||
|
Demonstrates looking up a list of Supervisor Services registered on vCenter.
|
||||||
|
"""
|
||||||
|
def __init__(self):
|
||||||
|
parser = sample_cli.build_arg_parser()
|
||||||
|
args = sample_util.process_cli_args(parser.parse_args())
|
||||||
|
session = get_unverified_session() if args.skipverification else None
|
||||||
|
stub_config = get_configuration(
|
||||||
|
args.server, args.username, args.password,
|
||||||
|
session)
|
||||||
|
self.supervisor_services = SupervisorServices(stub_config)
|
||||||
|
self.versions = Versions(stub_config)
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
"""
|
||||||
|
List Supervisor Services registered on vCenter Server.
|
||||||
|
"""
|
||||||
|
services = self.supervisor_services.list()
|
||||||
|
print('{0}\nList of Supervisor Services\n{0}'.format(separator))
|
||||||
|
for s in services:
|
||||||
|
versions = self.versions.list(s.supervisor_service)
|
||||||
|
version_summary = ', '.join([v.version for v in versions])
|
||||||
|
print('Service: {0}'.format(s.supervisor_service))
|
||||||
|
print('Display Name: {0}'.format(s.display_name))
|
||||||
|
print('Versions: {0}'.format(version_summary))
|
||||||
|
print('State: {0}\n{1}'.format(s.state, separator))
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
list_cl = ListSupervisorServices()
|
||||||
|
list_cl.run()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
@ -0,0 +1,75 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
"""
|
||||||
|
* *******************************************************
|
||||||
|
* Copyright (c) VMware, Inc. 2022. All Rights Reserved.
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
* *******************************************************
|
||||||
|
*
|
||||||
|
* DISCLAIMER. THIS PROGRAM IS PROVIDED TO YOU "AS IS" WITHOUT
|
||||||
|
* WARRANTIES OR CONDITIONS OF ANY KIND, WHETHER ORAL OR WRITTEN,
|
||||||
|
* EXPRESS OR IMPLIED. THE AUTHOR SPECIFICALLY DISCLAIMS ANY IMPLIED
|
||||||
|
* WARRANTIES OR CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY,
|
||||||
|
* NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
"""
|
||||||
|
|
||||||
|
__author__ = 'VMware, Inc.'
|
||||||
|
__copyright__ = 'Copyright 2022 VMware, Inc. All rights reserved.'
|
||||||
|
__vcenter_version__ = '7.0.2+'
|
||||||
|
|
||||||
|
from com.vmware.vcenter.namespace_management.supervisor_services_client import \
|
||||||
|
ClusterSupervisorServices, Versions
|
||||||
|
|
||||||
|
from samples.vsphere.common import sample_cli
|
||||||
|
from samples.vsphere.common import sample_util
|
||||||
|
from samples.vsphere.common.ssl_helper import get_unverified_session
|
||||||
|
from samples.vsphere.vcenter.hcl.utils import get_configuration
|
||||||
|
|
||||||
|
separator = '-' * 40
|
||||||
|
|
||||||
|
|
||||||
|
class ListClusterSupervisorServices(object):
|
||||||
|
"""
|
||||||
|
Demonstrates looking up a list of Supervisor Services installed on a given
|
||||||
|
Supervisor Cluster.
|
||||||
|
"""
|
||||||
|
def __init__(self):
|
||||||
|
parser = sample_cli.build_arg_parser()
|
||||||
|
parser.add_argument('--cluster',
|
||||||
|
required=True,
|
||||||
|
help='The MoID of the Supervisor Cluster to query.')
|
||||||
|
|
||||||
|
args = sample_util.process_cli_args(parser.parse_args())
|
||||||
|
session = get_unverified_session() if args.skipverification else None
|
||||||
|
stub_config = get_configuration(
|
||||||
|
args.server, args.username, args.password,
|
||||||
|
session)
|
||||||
|
self.cluster_supervisor_services = ClusterSupervisorServices(
|
||||||
|
stub_config)
|
||||||
|
self.versions = Versions(stub_config)
|
||||||
|
self.cluster = args.cluster
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
"""
|
||||||
|
List Supervisor Services registered on vCenter Server.
|
||||||
|
"""
|
||||||
|
services = self.cluster_supervisor_services.list(self.cluster)
|
||||||
|
print('{0}\nList of Cluster Supervisor Services\n{0}'.format(separator))
|
||||||
|
for s in services:
|
||||||
|
info = self.versions.get(s.supervisor_service, s.current_version)
|
||||||
|
print('Service: {0}'.format(s.supervisor_service))
|
||||||
|
print('Display Name: {0}'.format(info.display_name))
|
||||||
|
print('Content Type: {0}'.format(info.content_type))
|
||||||
|
print('Current Version: {0}'.format(s.current_version))
|
||||||
|
print('Desired Version: {0}'.format(s.desired_version))
|
||||||
|
print('Config Status: {0}\n{1}'.format(s.config_status,
|
||||||
|
separator))
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
list_cl = ListClusterSupervisorServices()
|
||||||
|
list_cl.run()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
Loading…
Reference in New Issue
Block a user