Пример #1
0
  def Run(self, args):
    """See base class."""
    release_track = self.ReleaseTrack()

    project = properties.VALUES.core.project.GetOrFail()
    guest_policy_uri_path = osconfig_command_utils.GetGuestPolicyUriPath(
        'projects', project, args.POLICY_ID)
    client = osconfig_api_utils.GetClientInstance(
        release_track, api_version_override='v1beta')
    service = client.projects_guestPolicies
    messages = osconfig_api_utils.GetClientMessages(
        release_track, api_version_override='v1beta')

    get_request = messages.OsconfigProjectsGuestPoliciesGetRequest(
        name=guest_policy_uri_path)
    try:
      get_response = service.Get(get_request)
    except apitools_exceptions.HttpNotFoundError:
      raise ops_agents_exceptions.PolicyNotFoundError(
          policy_id=args.POLICY_ID)
    if not guest_policy_validator.IsOpsAgentPolicy(get_response):
      raise ops_agents_exceptions.PolicyNotFoundError(
          policy_id=args.POLICY_ID)
    try:
      ops_agents_policy = to_ops_agents.ConvertGuestPolicyToOpsAgentPolicy(
          get_response)
    except calliope_exceptions.BadArgumentException:
      raise ops_agents_exceptions.PolicyMalformedError(
          policy_id=args.POLICY_ID)
    return ops_agents_policy
Пример #2
0
 def testConvertGuestPolicyToOpsAgentPolicyNonJsonObjDescription_Raises(self):
   description_json_array = '[]'
   self.guest_policy.description = description_json_array
   with self.assertRaisesRegex(
       exceptions.BadArgumentException,
       'description field is not a JSON object.'):
     converter.ConvertGuestPolicyToOpsAgentPolicy(self.guest_policy)
    def Run(self, args):
        """See base class."""

        release_track = self.ReleaseTrack()
        client = osconfig_api_utils.GetClientInstance(
            release_track, api_version_override='v1beta')
        messages = osconfig_api_utils.GetClientMessages(
            release_track, api_version_override='v1beta')
        ops_agents_policy = agent_policy.CreateOpsAgentPolicy(
            args.description, args.agent_rules, args.group_labels,
            args.os_types, args.zones, args.instances)
        validator.ValidateOpsAgentsPolicy(ops_agents_policy)
        guest_policy = to_guest_policy.ConvertOpsAgentPolicyToGuestPolicy(
            messages, ops_agents_policy)
        project = properties.VALUES.core.project.GetOrFail()
        parent_path = osconfig_command_utils.GetProjectUriPath(project)
        request = messages.OsconfigProjectsGuestPoliciesCreateRequest(
            guestPolicy=guest_policy,
            guestPolicyId=args.POLICY_ID,
            parent=parent_path,
        )
        service = client.projects_guestPolicies
        complete_guest_policy = service.Create(request)
        ops_agents_policy = to_ops_agents.ConvertGuestPolicyToOpsAgentPolicy(
            complete_guest_policy)
        return ops_agents_policy
Пример #4
0
 def testConvertGuestPolicyToOpsAgentPolicyNonJsonDescription_Raises(self):
   description_missing_quote = '{type": "ops-agents}'
   self.guest_policy.description = description_missing_quote
   with self.assertRaisesRegex(
       exceptions.BadArgumentException,
       'description field is not a JSON object: .*'):
     converter.ConvertGuestPolicyToOpsAgentPolicy(self.guest_policy)
Пример #5
0
 def testConvertGuestPolicyToOpsAgentPolicyMissingKeyAgentRules_Raises(self):
   agent_rules_key_missing = (
       '{"type": "ops-agents","description": "some desc"}')
   self.guest_policy.description = agent_rules_key_missing
   with self.assertRaisesRegex(
       exceptions.BadArgumentException,
       'missing a required key agentRules:.*'):
     converter.ConvertGuestPolicyToOpsAgentPolicy(self.guest_policy)
Пример #6
0
 def testConvertGuestPolicyToOpsAgentPolicyMissingKeyDescription_Raises(self):
   description_key_missing = (
       '{"type": "ops-agents", "agentRules": [{"enableAutoupgrade": true, '
       '"type": "logging", "version": "1.6.35-1"}]}')
   self.guest_policy.description = description_key_missing
   with self.assertRaisesRegex(
       exceptions.BadArgumentException,
       'missing a required key description:.*'):
     converter.ConvertGuestPolicyToOpsAgentPolicy(self.guest_policy)
Пример #7
0
 def testConvertGuestPolicyToOpsAgentPolicyMissingField_Raises(self):
   agent_rules_missing_package_state_field = (
       '{"type": "ops-agents","description": "some desc","agentRules": '
       '[{"enableAutoupgrade": true, "type": "logging", "version": '
       '"1.6.35-1"}]}')
   self.guest_policy.description = agent_rules_missing_package_state_field
   with self.assertRaisesRegex(
       exceptions.BadArgumentException,
       'agent rule specification .* missing a required key.*packageState'):
     converter.ConvertGuestPolicyToOpsAgentPolicy(self.guest_policy)
Пример #8
0
    def Run(self, args):
        """See base class."""
        release_track = self.ReleaseTrack()
        client = osconfig_api_utils.GetClientInstance(
            release_track, api_version_override='v1beta')
        messages = osconfig_api_utils.GetClientMessages(
            release_track, api_version_override='v1beta')

        project = properties.VALUES.core.project.GetOrFail()
        request = messages.OsconfigProjectsGuestPoliciesGetRequest(
            name=osconfig_command_utils.GetGuestPolicyUriPath(
                'projects', project, args.POLICY_ID))
        service = client.projects_guestPolicies
        current_guest_policy = service.Get(request)
        current_ops_agents_policy = guest_policy_to_ops_agents_policy_converter.ConvertGuestPolicyToOpsAgentPolicy(
            current_guest_policy)
        updated_ops_agents_policy = ops_agents_policy.UpdateOpsAgentsPolicy(
            current_ops_agents_policy, args.description, args.etag,
            args.agent_rules, args.os_types,
            [] if args.clear_group_labels else args.group_labels,
            [] if args.clear_zones else args.zones,
            [] if args.clear_instances else args.instances)
        ops_agents_policy_validator.ValidateOpsAgentsPolicy(
            updated_ops_agents_policy)
        updated_os_config_policy = ops_agents_policy_to_guest_policy_converter.ConvertOpsAgentPolicyToGuestPolicy(
            messages, updated_ops_agents_policy, current_guest_policy.recipes)
        request = messages.OsconfigProjectsGuestPoliciesPatchRequest(
            guestPolicy=updated_os_config_policy,
            name=osconfig_command_utils.GetGuestPolicyUriPath(
                'projects', project, args.POLICY_ID),
            updateMask=None,
        )
        complete_os_config_policy = service.Patch(request)
        complete_ops_agent_policy = guest_policy_to_ops_agents_policy_converter.ConvertGuestPolicyToOpsAgentPolicy(
            complete_os_config_policy)
        return complete_ops_agent_policy
Пример #9
0
  def Run(self, args):
    """See base class."""
    release_track = self.ReleaseTrack()
    client = osconfig_api_utils.GetClientInstance(
        release_track, api_version_override='v1beta')
    messages = osconfig_api_utils.GetClientMessages(
        release_track, api_version_override='v1beta')

    project = properties.VALUES.core.project.GetOrFail()
    request = messages.OsconfigProjectsGuestPoliciesListRequest(
        pageSize=args.page_size,
        parent=osconfig_command_utils.GetProjectUriPath(project),
    )
    service = client.projects_guestPolicies

    for guest_policy in list_pager.YieldFromList(
        service,
        request,
        limit=args.limit,
        predicate=guest_policy_validator.IsOpsAgentPolicy,
        batch_size=osconfig_command_utils.GetListBatchSize(args),
        field='guestPolicies',
        batch_size_attribute='pageSize',
    ):
      try:
        yield converter.ConvertGuestPolicyToOpsAgentPolicy(guest_policy)
      except exceptions.BadArgumentException:
        log.warning(
            'Encountered a malformed policy. The Ops Agents policy [%s] may '
            'have been modified directly by the OS Config guest policy API / '
            'gcloud commands. If so, please delete and re-create with the Ops '
            'Agents policy gcloud commands. If not, this may be an internal '
            'error.',
            guest_policy.name,
        )
        yield agent_policy.OpsAgentPolicy(
            assignment=None,
            agent_rules=None,
            description='<MALFORMED>',
            etag=None,
            name=guest_policy.name,
            update_time=guest_policy.updateTime,
            create_time=guest_policy.createTime
        )
Пример #10
0
 def testConvertGuestPolicyToOpsAgentPolicy(self):
   actual_ops_agents_policy = converter.ConvertGuestPolicyToOpsAgentPolicy(
       self.guest_policy)
   self.assertEqual(self.expected_ops_agents_policy, actual_ops_agents_policy)