def deploy_hx_cluster(): """Deploy HX cluster via the Intersight API.""" try: handle = hyperflex_cluster_profile_api.HyperflexClusterProfileApi( api_instance) kwargs = dict(filter="Name eq 'sjc07-r13-hx-edge-4'") response = handle.hyperflex_cluster_profiles_get(**kwargs) response_dict = response.to_dict() if response_dict.get('results'): # get the 1st results object if a list was returned response_dict = response_dict['results'][0] if response_dict['config_context']['config_state'] == 'Associated': message = 'Your Intersight HyperFlex cluster is already deployed and in the ' + response_dict[ 'config_context']['config_state'] + ' state' else: # config_state != 'Associated' moid = response_dict['moid'] api_body = dict(Action='Deploy') patch_response = handle.hyperflex_cluster_profiles_moid_patch( moid, api_body) message = 'Your Intersight HyperFlex cluster is now being deployed, ask me later for the HyperFlex cluster configuration state' except Exception as err: print(err) message = ( "There was an error connecting to or retrieving information from Cisco Intersight" ) return message
def deploy_hx_cluster(cluster_name): """Deploy HX cluster via the Intersight API.""" handle = hyperflex_cluster_profile_api.HyperflexClusterProfileApi( api_instance) kwargs = dict(filter="Name eq '%s' or \ Tags/any(t:t/Key eq 'Location' and t/Value eq'%s')" % (cluster_name, cluster_name)) try: response = handle.hyperflex_cluster_profiles_get(**kwargs) except Exception as err: print(err) return 'There was an error connecting to or retrieving information from Cisco Intersight' message = '' response_dict = response.to_dict() if response_dict.get('results'): # get the 1st results object if a list was returned response_dict = response_dict['results'][0] if response_dict['config_context']['config_state'] == 'Associated': message = "Your %s cluster is already deployed and in the Associated state" % cluster_name else: # config_state != 'Associated' moid = response_dict['moid'] api_body = dict(Action='Deploy') response = handle.hyperflex_cluster_profiles_moid_patch( moid, api_body) message = "Your %s cluster is now being deployed. "\ "Ask Intersight, what is the status of my %s cluster to get current deployment status" % (cluster_name, cluster_name) return message
def get_datacenter_info(): """Get information including health state of the specified cluster.""" handle = hyperflex_cluster_profile_api.HyperflexClusterProfileApi( api_instance) message = '' try: response = handle.hyperflex_cluster_profiles_get() except Exception as err: print(err) message = ( "There was an error connecting to or retrieving information from Cisco Intersight" ) response_dict = response.to_dict() if response_dict.get('results'): for cluster in response_dict['results']: cluster_name = cluster['name'] message += get_hx_config_state(cluster_name) else: message = 'Sorry, I could not find any information for your datacenter clusters' return message
def get_hx_config_state(): """Get HX cluster configuration state via the Intersight API.""" try: handle = hyperflex_cluster_profile_api.HyperflexClusterProfileApi( api_instance) kwargs = dict(filter="Name eq 'sjc07-r13-hx-edge-4'") response = handle.hyperflex_cluster_profiles_get(**kwargs) response_dict = response.to_dict() if response_dict.get('results'): # get the 1st results object if a list was returned response_dict = response_dict['results'][0] message = 'Your Intersight HyperFlex cluster is currently in the ' + response_dict[ 'config_context']['config_state'] + ' state' except Exception as err: print(err) message = ( "There was an error connecting to or retrieving information from Cisco Intersight" ) return message
def get_hx_config_state(cluster_name): """ Get HX cluster configuration state and health via the Intersight API. Returns a string with state and health including any alarms present """ handle = hyperflex_cluster_profile_api.HyperflexClusterProfileApi( api_instance) kwargs = dict(filter="Name eq '%s' or \ Tags/any(t:t/Key eq 'Location' and t/Value eq'%s')" % (cluster_name, cluster_name)) try: response = handle.hyperflex_cluster_profiles_get(**kwargs) except Exception as err: print(err) return 'There was an error connecting to or retrieving information from Cisco Intersight' message = '' response_dict = response.to_dict() if response_dict.get('results'): # get the 1st results object if a list was returned response_dict = response_dict['results'][0] config_state = response_dict['config_context']['config_state'] message = "Your %s cluster " % cluster_name if config_state == 'Associated': message += 'is deployed and ' message += get_health(cluster_name, print_name=False) message += '. ' elif config_state == 'Assigned': message += 'is ready for deployment. ' elif config_state == 'Configuring': message += 'is currently being deployed. ' else: message += 'needs additional configuration before being deployed. ' return message